七、如何分组执行(冒烟,分模块执行,分接口和web执行) 冒烟用例:分布在各个模块中 标记:@pytest.mark.smoke usermanage:用户管理模块 productmanage:商品管理模块 @pytest -vs -m ”smoke” @pytest -vs -m “smoke or usermanage"
八、pytest跳过测试用例 1、无条件跳过
@pytest.mark.skip(reson = "***")
2、有条件跳过
@pytest.mark.skipif(条件,reason=‘**’)
配置文件再听一下,重新配置 参数:–html 生成测试报告,一般使用allure生成的报告更加美观 ini文件中配置allure生成的临时json报告格式,./temp为临时目录
addopts = -vs --alluredir ./temp
将报告生成allure格式
os.system('allure generate ./temp -o ./report --clean')
测试结构 九、pytest框架实现一些前后置(固件、夹具)的处理,常用三种‘ 1、setup/teardown,setup_class/teardown_class,适用于所有用例 为什么需要这些功能? setup测试用例开始之前的初始化工作,teardown测试用例之后的扫尾工作 setup_class每个类执行前的初始化工作,如创建初始化对象,创建数据库的连接,teardown_class 测试用例之后的扫尾工作 缺点:每个用例之前都要执行
2、使用@pytest.fixture()装饰器来实现部分用例前后置 def my_fixture(scope="",params="",autouse="",ids="",name=""): scope:表示的是被@pytest.fixture标记的作用域,function(默认)、class、module、package/session(灵活性高) params:参数化,支持(列表[],元组[],字典列表{[],[]},字典元组{(),()} autouse = true :自动执行,默认false ids:自动使用params参数化时,给每一个变量设置一个变量名 name:表示给被@pytest.fixtrue标记得方法取一个别名
注意: params=[‘成龙’, ‘李连杰’, ‘甄子丹’],是参数名,带s request param是属性名,不带s 参数化和前后置互不影响,是独立的 return 和 yield 都表示返回的意思,但是return下一行不能再接代码,而yield返回后后面可以接代码
3、通过conftest.py 和 pytest.fixture()结合使用实现全局的前置应用,比如:项目的全局登录,模块的全局处理 3.1 contest.py是一个单独存放的夹具配置文件,名称固定,不能修改 3.2用处:可以在不同的py文件中,使用同一个fixture来配置前后置内容 3.3 原则上需要和运行的用例放在同一层,不需要做任何的input导入操作
四、断言
assert
五、pytest结合allure-pytest测试报告 之前用的:pytest-html 1、下载解压配置path路径
https://github.com/allure-framework/allure2/releases
2、生成临时的allure json格式的报告
addopts = -vs --alluredir ./temp
结合企业测试要达到的实战结果:如下(感叹学无止境啊)
|