python测试理论-9-6

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测试报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值