python自动化测试技术-Allure

大部分人可能做的是爬虫和web,数据分析方面的工作,今天分享个在自动化测试领域python能做什么样的事情,比如下方,是用python+pytest+allure生成的精美自动化测试报告,本文仅演示,用例个数较少,具体工作中根据项目来进行编写用例,allure测试报告现在已经非常流行,具体看下方图,测试用例个数、通过率、测试步骤执行过程、描述,都给我们详细的生成出来,这样的测试用例,拿出去给领导汇报,逼格绝对高。

1、环境配置

1、电脑配jdk 1.8+版本,allure所依赖的环境

2、allure , 单独的包,安装好后需要配环境变量

3、pytest、allure-pytest、allure-python-commons、selenium这几个通过pip安装即可

2、文件目录

1、report : 报告最终生成的目录

2、xml : xml数据文件,用来生成最终报告(中间产物)

3、20.py 自动化脚本文件

4、methods.py 用来被调用的脚本方法文件

5、start_script.py 脚本启动文件,生成报告

3、start_script.py启动脚本文件代码

主要是通过os.system执行两个命令,分别生产xml和html最终报告,clean用来清空旧目录

import os

# file_path 是自动化脚本文件
file_path = "20.py"

# xmlpth是生成的xml数据文件,用来生成最终报告
xmlpath = "./xml"

xmlStr = "pytest -s -q {file_path} --alluredir {xmlpath}".format(file_path=file_path, xmlpath=xmlpath)
print("xmlStr",xmlStr)

# 执行命令,生成xml文件
a = os.system(xmlStr)

# 生成报告,--clean会清除旧文件
htmlStr = "allure generate {0} -o ./report/ --clean".format(xmlpath)
os.system(htmlStr)

4、20.py自动化测试脚本文件

所有的方法均调用的methods.py里面

1、setup_class :

类的初始化方法,浏览器最大化,不然有些元素找不到

2、teardown_class :

类的销毁方法,退出驱动

3、teardown:

每个用例方法的销毁方法,我这里没用,比如应用场景:服务崩了后用来返回到首页,以不影响下个用例的执行

参数传递,见后面介绍,用上我直接复制粘贴了一个,代表2个用例,明白流程即可

import allure, os,sys

sys.path.insert(0,r"C:\\Users\\Administrator\\Desktop\\关于网站\\ccc\\爬虫系统\\go\\allure_test")
from allure_test import methods

class Test_20:
 def setup_class(self):
  methods.max_window()

 def teardown_class(self):
  methods.close()

 @allure.feature(‘打开京东‘)
 @allure.story(‘点击登陆‘)
def test_case_15(self):
   ‘‘‘用例名称京东-登录-百度-新闻-百度‘‘‘
  methods.get_url("https://www.jd.com", desc="打开京东")
  methods.click("xpath=>//*[contains(text(),‘请登录‘)]", desc="登陆")
  methods.click("xpath=>//*[contains(text(),‘账户登录‘)]", desc="切换账户登陆")
  methods.send_key("xpath=>//*[@id=‘loginname‘]", 188888888, desc="发送账户名密码")
  methods.wait(5)

 @allure.feature(‘打开京东‘)
 @allure.story(‘点击登陆‘)
 def test_case_16(self):
   ‘‘‘用例名称京东-登录-百度-新闻-百度‘‘‘
  methods.get_url("https://www.jd.com", desc="打开京东")
  methods.click("xpath=>//*[contains(text(),‘请登录‘)]", desc="登陆")
  methods.click("xpath=>//*[contains(text(),‘账户登录‘)]", desc="切换账户登陆")
   methods.send_key("xpath=>//*[@id=‘loginname‘]", 188888888, desc="发送账户名密码")
  methods.wait(5)

5、methods.py文件

举例说明

send_key方法:

1、loc :需要传入的元素位置,定义规则是xpath=>"*****",id=>"*****",这样我用split切分=>符号后,就可以获取元素选取方式和具体xpath路径或者id名字,例如 xpath=>//*[@id=‘loginname‘] 切分后,可以得到["xpath","//*[@id=‘loginname‘] "],供我定位选取元素使用


2、key:需要传入的值

3、desc:用例步骤描述

4、with allure.step用来记录步骤生成allure报告

def send_key(loc,key,desc=None):
   with allure.step(desc):
     try:
      getElement(loc).send_keys(Keys.CONTROL,‘a‘)
      getElement(loc).send_keys(key)
     except Exception as e:
       raise e

getElement方法:

供调用,需要传入上面介绍的loc

# 获取单个页面元素
def getElement(loc):
   try:
     by = loc.split("=>")[0]
     value = loc.split("=>")[1]
    element = WebDriverWait(driver, 10).until(lambda x: x.find_element(by=byTypeDict[by], value=value))
     # print(element)
     return element
  except Exception as e:
    raise e

click方法:

对于需要传入元素位置的,都要传loc

def click(loc,desc=None):
   with allure.step(desc):
     try:
      print("这里是点击方法")
      getElement(loc).click()
     except Exception as e:
       raise e
import os
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
import allure

byTypeDict = {
 "xpath": By.XPATH,
 "id": By.ID,
 "name": By.NAME,
 "class_name": By.CLASS_NAME,
 "tag_name": By.TAG_NAME,
 "link_text": By.LINK_TEXT,
 "partial_link_text": By.PARTIAL_LINK_TEXT,
 "css selector" : By.CSS_SELECTOR
}

driver = webdriver.Chrome(executable_path=‘C:\chrome\chromedriver246.exe‘)
# 获取单个页面元素
def getElement(loc):
  try:
   by = loc.split("=>")[0]
   value = loc.split("=>")[1]
   element = WebDriverWait(driver, 10).until(lambda x: x.find_element(by=byTypeDict[by], value=value))
    # print(element)
    return element
   except Exception as e:
    raise e

# 获取一组相同的元素,以列表形式返回
def getElements(loc):
   try:
    by = loc.split("=>")[0]
    value = loc.split("=>")[1]
    elements = WebDriverWait(driver, 5).until(lambda x: x.find_elements(by=byTypeDict[by], value=value))
     return elements
   except Exception as e:
     raise e

def get_url(*args, desc=None):
   with allure.step(desc):
     try:
      driver.get(args[0])
     except Exception as e:
       raise e

def wait(*args, desc=None):
   with allure.step(desc):
     try:
      time.sleep(args[0])
     except Exception as e:
       raise e

def max_window(*args, **kwargs):
   try:
    driver.maximize_window()
   except Exception as e:
     raise e

def close(desc=None):
   with allure.step(desc):
     try:
      driver.quit()
     except Exception as e:
       raise e

def click(loc,desc=None):
   with allure.step(desc):
     try:
      print("这里是点击方法")
      getElement(loc).click()
     except Exception as e:
       raise e

def send_key(loc,key,desc=None):
   with allure.step(desc):
     try:
      getElement(loc).send_keys(Keys.CONTROL,‘a‘)
      getElement(loc).send_keys(key)
     except Exception as e:
       raise e

6、启动脚本python3 start_script.py

打印脚本执行信息,有报错的话也可以看到

7、启动脚本python3 start_script.py

切换到report目录下执行,指定报告打开的ip和端口,提示成功后会自动打开网页,也可以复制下方出现的地址打开(我这里提示http://api.meiduo.site:8083是因为我本机hosts的dns改了,你的hosts文件没改的话,不会出现此问题

allure open -h 127.0.0.1 -p 8083 ./

8、其他说明:

1、这是基于web的ui自动化,用的是selenium,后面会出基于app的appium方面的ui自动化文章,其实也实现了另外一种爬虫进行app数据抓取的功能

2、本文环境要配置正确,不然得不到想要的报告

3、具体工作实战应用比本文讲述的要复杂的多,很多基于jenkins等做批量脚本执行

4、methods.py方法要继续补充,我这里只是演示用的几个方法

原文地址:https://www.cnblogs.com/kaka123/p/11674690.html

时间: 2024-10-19 17:03:03

python自动化测试技术-Allure的相关文章

如何自学Python爬虫技术

作为程序员或者软件测试员们的一员,置信大家一定都听说过python语言. Python语言这两年是越来越火了,它渐渐崛起也是有缘由的. 比如市场需求.入门简单易学.支持多种语言--当然这些都是很官方的. 说白了,就是 写个web服务,可以用python: 写个服务器脚本,可以用python: 写个桌面客户端,可以用python: 做机器学习数据挖掘,可以用python: 写测试工具自动化脚本依旧可以用python-- Python语言是免费支持的! 既然那么好,如何利用python进行有意义的行

Python自动化测试 开始招生啦

写在开始的话 想法太多,顾虑太多,让自己无法前进.仔细想想,是自己困住了自己,是自己给自己戴上了枷锁! 改变,永远不嫌晚.无论你是几岁,也无论你目前所处的境况有多糟,只要立定目标.一步一步往前走,人生随时都有翻盘的可能性.新的一天,你要加油! 课程介绍(感兴趣的可加入QQ群519996731) 大家期待已久的Python自动化测试培训开始招生啦!潜心修炼并整理出最实用的知识,从基础到框架到平台全方位保罗,史上最全合集!秉承一贯的风格:幽默.无废话.接地气.通俗的讲解且99%为实战代码. 注:本次

python自动化测试(2)-自动化基本技术原理

python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西. 2   应用软件逻辑结构 数据库应用系统 可能是最典型的网络应用程序了,关于它的软件架构如下: 一般在逻辑上分为4层: 用户界面层 UI 为终端用户提供交互的人机界面 业务逻辑层 BLL 将数据库抽象出来的对象进行拼接成具体

[原创] 软件自动化测试技术(1) - 准备篇

软件自动化测试技术(1) - 准备篇 想清楚 1. 为什么要做自动化测试? 有前途? 有钱途? 大家都在做? 有危机感? 过去做的很没意思,想换换? 2. 我的兴趣点在哪里? 对当前工作没有任何兴趣? 对点鼠标感兴趣? 对测试手工感兴趣? 对写代码感兴趣? 对各种新的技术感兴趣? 3. 我适合做自动化吗? 我不懂技术? 我对学习工具感到恐惧? 我觉得手工的系统/验收测试能发现更多的缺陷,而这正是我的成就感所在? 4. 做了自动化我能怎么样? 有钱了? 高大上了? 可以跳槽去Google.Face

?《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......

<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂,想要提高测试技术的小伙伴可以线上购买课程进行学习. 课程背景 测试人员进阶实战课程.本套课程以作者多年测试实战经验为背景,结合大量测试案例深入浅出讲解目前主流web端.app端自动化测试框架以及使用Python如何从0到1实现接口测试框架的搭建. 课程特色 系统教学+实战案例+开放源码.涵盖Python3

源码时代软件测试干货分享|Python自动化测试常见面试题,学会不怕找不到好工作!

怎么理解装饰器,用过或者写过什么装饰器吗? 1.1.概述:装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 1.2.详细描述: 1.import?logging??8.????????ret?=?oldfunc(*args,?**kwargs)??9.????????return?ret??10.??11.?????返回新函数??12.????return?new_func??13.??14.??15.#?通过语

关于《Python自动化测试实战》

作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员.任何一门技术涵盖的知识点都是非常广泛的,可能并不是一本书就能够写完并且讲解清楚.本书没有太多的废话,书中内容都是些实战型的例子,任何读者对着本书中的例子都可以很快上手学习.本书中实战教程属于一气呵成,从头到尾,知识体系版块布局清晰,实操流程表述细致且接地气,可以保证大部分读者在阅读本书时比较轻松.愉悦.并不会像有些书的内容读来读去,知识点分散

《Python自动化测试实战》终于出版!!!

一.为什么会写这本书 1.系统梳理.可以加深对测试知识体系的系统梳理 2.名气.增加个人的名气,比如:面试时,可以很自豪的说,我是xxxx书的作者 3.利他.帮助有需要的学习者更系统.完备的学习和进阶 4.自我价值的实现.看到自己写的书,非常有成就感 5.符合笔者一直遵循的原则:坚持开源.拥抱开源精神 6.打破行业内的一些怪象.写一些真正实用.行业内未曾公开的测试技术 6.年迈之际,回想当年.感动自己,永远热泪盈眶 二.本书封面设计 一本好书,不仅内容要实用.丰富.当然,书外观的设计封面.纸张印

《自拍教程》Python自动化测试学习思路

前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审,测试用例执行,报bug,整理测试报告. 测试用例设计与评审是熟悉软件产品需求的重要过程, 可以更深入地了解软件产品的具体需求. 先掌握手动执行用例 用例设计及评审结束后,先学会手动执行测试用例, 通过手动执行用例,也可以更好的了解软件产品的具体需求, 并学会总结归纳不同的测试类型的用例. 比如性能测