#pytest 框架实现一些前后置的处理,常用的三种方法
setup /teardown 在每个用例前后都会执行
import pytest class TestLogin: #在所有的用例之前只执行一次 def setup_class(self): print('在每个类执行钱的初始化的工作:例如:创建日志对象,创建数据库的连接请求对象') #在每条用例之前都执行一次 def setup(self): print('打开浏览器') @pytest.mark.run(order=1) def test_01_mingtian(self): print('明天') @pytest.mark.run(order=3) def test_01_jintian(self): print('晴天') @pytest.mark.skip @pytest.mark.run(order=2) def test_01_zuotian(self): print('昨天') def teardown(self): print('\n关闭浏览器') def teardown_class(self): print('\n 在每个类执行后的扫尾工作:例如:销毁日志对象,销毁数据库的连接') if __name__ == '__main__': pytest.main(['test_case.py','-s'])
pytest.fixture(scope,params,autouse,ids,name)
class TestOffice: #autouse 默认为False,如果为True,就表示默认调用了前后置方法 @pytest.fixture(scope='class',autouse='True',) def my_fixture(self): print('\n这是一个前置方法') yield print('\n这个是一个后置方法') def test_01_jintian(self): print('\n今天') def test_02_mingtian(self,my_fixture): print('\n明天') if __name__ == '__main__': pytest.main(['test_office.py','-s'])
import pytest class TestOffice: #autouse 默认为False,如果为True,就表示默认调用了前后置方法 @pytest.fixture(scope='function',params=['王一一','王一二']) def my_fixture(self,request): #request :用于传参 print('前置') yield request.param print('后置') def test_01_jintian(self): print('\n今天') def test_02_mingtian(self,my_fixture): print('\n明天') print('----'+str(my_fixture)) if __name__ == '__main__': pytest.main(['test_office.py','-s'])
params=[[‘王一一’,‘王一二’]] 这里的params是参数名,是有s
request.param 这里是属性名,不带s
预期结果
test_office.py::TestOffice::test_01_jintian 今天 PASSED test_office.py::TestOffice::test_02_mingtian[\u738b\u4e00\u4e00] 前置 明天 ----王一一 PASSED后置 test_office.py::TestOffice::test_02_mingtian[\u738b\u4e00\u4e8c] 前置 明天 ----王一二 PASSED后置
1,conftest.py 文件时单独存放的一个夹具配置文件,名称不能更改
2, 用处可以在不同的py文件中使用同一个fixture函数
3,原则上conftest.py 需要和运行的用例放再同一层,并且不需要做任何import 操作。
总结:
setup/teardown, setup_class/teardown_class 作用于所有用例或者所有的类
@pytest.fixtrue(), 它的作用时既可以部分,也可以全部前后置
conftest.py 和@pytest.fixtrue()结合使用,作用域全局的前后置
assert 1==2
pytest-html
allure-pytest
生成json格式的临时报告
--alluredir ./temp
生成allure报告
os.system('allure generate ./temp -o ./report --clean') allure generate 命令,固定的 ./temp 临时的json 格式报告的路径 -o 输出output ./report 生成allure 报告的路径 --clean 清空./report 路径原来的报告