首页 > 其他 > 详细

pytest参数化

时间:2020-09-19 20:45:33      阅读:42      评论:0      收藏:0      [点我收藏+]

如果想要做多终端测试,肯定要用到参数化,如何做参数化?首先得了解它的函数。

@pytest.fixture

作用域scope默认是函数,params是可选的参数列表,fixture函数调用该参数列表执行

@pytest.fixture(scope=‘module‘,params=[(4723,‘xiaomi‘),(4727,‘meizu‘)]) 

(4723,‘xiaomi‘),(4727,‘meizu‘)里面每组参数都要独立执行一次测试

fixture函数的名称可以放在后面引用,在运行测试之前调用:test,模块或类可以使用pytest.mark.usefixtures(固定名称)

yield 的函数被称为生成器(generator)

每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

#演示pytest参数化
import pytest
#重新定义初始化清除函数
@pytest.fixture(scope=module,params=[(4723,xiaomi),(4727,meizu)])
def before_test_module(request):
    port=request.param[0] #取元组的第一个元素作为参数
    device=request.param[1]
    print("准备")
    print(f==========在{device}手机启动被测应用=============)
    print(f连接appium服务端口号:{port})
    yield #简单理解为会调用后面这个函数,也可以在yield后面写print清除
    after_test_module()
  
#清除函数 def after_test_module(): print(关闭被测app) print(f断开appium服务) #假如这是不同密码登录的测试函数,psw为参数名,[‘123‘,‘456‘]为参数值,每组参数都独立执行一次测试 #也可以理解为参数化后,你的同一个测试用例用不同的参数值去执行。 @pytest.mark.usefixtures(before_test_module) #使用某个初始化函数 @pytest.mark.parametrize(psw,[123,456]) #测试用例参数化 def test_app(psw): print(f使用不同的密码{psw}登录) if __name__ == __main__: pytest.main([pytest_parameter.py,-s])

 

pytest参数化

原文:https://www.cnblogs.com/king2/p/13697190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!