数据驱动测试
数据驱动测试=参数化测试+数据文件
根据数据文件的内容,动态决定用例的数量和内容
数据文件:支持excel、csv、json、xml等不同格式的文件
如下:、
数据文件:
在这里插入图片描述
测试用例:
在这里插入图片描述
其中@pytest.mark.ddt标记是数据驱动测试
@pytest.mark.parametrize(“a,b,c”,read_csv(“data.csv”))标记要参数化,括号中要提供所有的参数,及读取到的数据
def test_add2(self,a,b,c):测试用例中也要指定所有参数
在这里插入图片描述
fixture
夹具:在用例执行之前、用例执行之后,自动执行代码。
之前:加密参数 之后:解密结果
之前:启动浏览器 之后:关闭浏览器
之前:注册、登录账号 之后:删除账号

@pytest.fixture
def shfd():
    # 前置操作
    yield
    # 后置操作

yield作为分隔符,yield之前的,在测试用例执行之前执行,yield之后的,在测试用例执行完之后执行;
使用:
1、在对应的测试用例中,要传标记fixture的方法。
2、 给用例添加@pytest.mark.usefixtures(“shfd”) —shfd是标记的方法名
在这里插入图片描述
fixture高级用法
1、自动使用
所有用例都执行fixture方法,添加:@pytest.fixture(autouse=True),如下:
在这里插入图片描述

2、依赖使用
fixture方法里面使用fixture,只能通过在参数中传递对应fixture方法名
在这里插入图片描述

3、返回内容
将要返回的内容放在yield关键字后,然后在测试用例中引用fixture方法
在这里插入图片描述

4、范围共享
默认范围:function:在函数内;
class:在类内;
module:在同一个模块(文件)内;
package:在同一个包(目录)下;
全局范围:session在同一批执行的所有用例范围内。
@pytest.fixture(autouse=True,scope=“session”)
在这里插入图片描述
conftest.py:建议放在项目根目录下方,所有文件都要用的方法,放在该文件中,这样真正的全局文件都可以用。
真正的全局范围:同时使用conftest.py和scope=session。

fixture共享的好处:
复用fixture,减少前置、后置步骤操作的时间;
在用例之间传递数据。
fixture共享的弊端:
共享范围内,fixture只执行一次。

插件管理
插件分两类:
1、不需要安装:内置插件
2、需要安装:第三方插件
插件的启用管理:
启用:pytest --html=report.html -p html
禁用:pytest --html=report.html -p no:html

插件使用方式:
1、参数
2、配置文件
3、fixture
4、mark

常用的第三方插件:
1、pytest-html:生成html测试报告
安装:pip install pytest-html
生成报告命令:pytest --html=report.html --self-contained-html
配置文件添加:addopts=–html=report.html --self-contained-html

2、pytest-xdist:分布式执行(默认使用多进程实现)
安装:pip install pytest-xdist
命令:pytest -n N(N代表几个进程)
注意:启动资源也会耗时,所以在任务本身耗时较久,超过调用成本很多时,使用才有意义。
缺点:有并发问题,资源竞争、乱序。

3、pytest-rerunfailures:失败重试
安装:pip install pytest-rerunfailures
–reruns 5(失败后跑5次)
–reruns-delay 1(每次重新运行中间,等待的时长:1s)

4、pytest-result-log:把用例的执行结果记录到日志文件中
安装:pip install pytest-result-log
使用:在配置文件中配置,如下:

;日志文件路径
log_file=./logs/pytest.log
;日志等级,超过该等级记录,不超过该等级,不记录
log_file_level=info
;日志格式,包含等级、时间、日志信息等
log_file_format=%(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)s
;日志时间格式
log_file_date_format=%Y-%m-%d %H:%M:%S

;记录用例执行结果
result_log_enable=1
;记录用例分割线
result_log_separator=1
;分割线等级
result_log_level_separator=warning
;异常信息等级
result_log_level_verbose=info

在这里插入图片描述
测试报告allure
安装:pip install allure-pytest
配置:在配置文件中进行参数配置
addopts=–alluredir=temps --clean-alluredir
配置后执行用例,生成日志数据,但是未生成报告
在这里插入图片描述

生成报告还需执行命令:
allure generate -o report -c temps
-o后的report指的是报告生成的目录,-c temps指的是从哪里获取日志数据。

pip安装allure插件后,执行生成报告的命令,结果报错如下:
在这里插入图片描述
解决措施如下:
1、用pip uninstall allure-pytest先写在该命令
在这里插入图片描述
2、下载allure对应包:
注意,安装allure-pytest插件(2.15.3)时,注意其版本,allure-commandline的版本必须等于或高于allure-pytest的版本。否则allure报告中统计不到测试用例数据。
在这里插入图片描述
我的allure-commandline版本2.13.2,allure-pytest版本2.15.3,导致pytest中使用allure生成报告显示NaN,报错信息:Could not read test result file temps/***.json。

3、解压allure压缩包到python对应的目录下:
在这里插入图片描述
4、配置allure环境变量,进入 电脑属性-高级系统设置 - 环境变量 - 系统变量 - path - 编辑,添加到allure下的bin目录,如下:
在这里插入图片描述
5、用pip install命令安装该插件
在这里插入图片描述
6、执行生成报告命令,若还是报错,重启pycharm,再试。
在这里插入图片描述
自动执行生成报告:
在main方法中,导入os模块,然后添加命令,如下,执行该main方法,即可生成报告。
在这里插入图片描述

生成allure时,对用例进行分组和关联
需要用到装饰器,如下:
@allure.ecip 最大分组:项目
@allure.feature 主题,模块
@allure.story 场景,功能
@allure.title 标题,用例
使用同一个装饰器的用例,自动分入同一组。
如代码这样写:
在这里插入图片描述

报告中分组如下:在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐