Pytest框架实现一些前后置(固件,夹具)的处理,常用三种 一、setup/teardown,setup_class/teardown_class class TestLiu: # 这个在所有的用例之前只执行一次 def setup_class(self): print('在每个类执行前的初始化的工作:比如创建日志对象,创建数据库的连接,创建接口的请求对象') # 在每个用例之前 def setup(self): print('\n在执行测试用例之前初始化的代码:打开浏览器,加载网页') def test_01_pangpang(self): print("哈哈") def test_02_xiaoyan(self): print("呵呵") def teardown(self): print('在用例执行之后的扫尾代码:关闭浏览器') def teardown_class(self): print('在每个类执行后扫尾工作,销毁日志对象,销毁数据库连接,销毁接口对象') 注意:和Unittest不一样,全是小写 二、使用fixture装饰器来实现部分用例的前后置 @pytest.fixture(scope="",params="",autouse="",ids="",name="") scope表示的是被@pytest.fixture标记的方法的作用域。function(默认),class,module, package/session params:参数化(支持,列表[],元组(),字典列表[(),(),()],字典元组({},{},{}) ) @pytest.fixture(scope='function',params=['成龙','李连杰','甄子丹']) def my_fixture(request): return request.param class TestLiu01: def test_01_pangpang(self): print("哈哈") def test_02_xiaoyan(self,my_fixture): print("呵呵") print('------------'+str(my_fixture)) params=['成龙','李连杰','甄子丹']这里params是参数名,有s request.param这里是属性名,是没有s的 autouse=True;自动执行,默认False ids:当使用params参数化时,给每一个值设置一个变量名,意义不大 name:给表示的是被@pytest.fixture标记的方法取一个别名 当取了别名后,那么原来的名称就用不了了。 三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理) 1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改的。 2.用处可以在不同py文件中使用同一个fixture函数 3.原则上conftest.py需要和运行的用例放到统一层,并且不需要做任何的import导入的操作 总结: setup/teardown.setup_class/teardown_class 它是作用于所有用例或者所有的类 @pytest.fixtrue() 它的作用既可以部分也可以全部前后置 conftest.py和@pytest.fixture()结合使用,作用于全局的前后置 四、断言 assert assert 1==2 五、pytest结婚allure-pytest插件生成allure测试报告
python测试理论-9-6
最新推荐文章于 2024-10-02 10:53:34 发布