pytest参数化的两种方式
Posted phyger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest参数化的两种方式相关的知识,希望对你有一定的参考价值。
1、传统方式
1 import requests,pytest 2 from Learning.variable import * 3 4 # 定义变量 5 #url = "https://www.baidu.com" 6 7 class TestClass(object): 8 global url #在此获取全局变量,并将其设置为TestClass类的全局变量 9 def setup_class(self): 10 print("start...") 11 12 def test_get(self): 13 #global url #在此获取全局变量,并将其设置为test_get方法内的全局变量 14 res = requests.get(url=url) 15 assert res.status_code == 200 16 17 18 if __name__ == ‘__main__‘: 19 pytest.main()
2、pytest推荐模式,即conftest测试数据共享
2.1、在function中使用
# content of test01.py import pytest,requests #将conftest中的com_variable方法传入用例中,不需要导入即可使用 def test_getBaidu(com_variable): a=requests.get(com_variable[‘url‘]) code = a.status_code assert code == 200 def test_paas(): pass
# content of conftest.py import pytest iaas= ‘url‘:‘https://www.baidu.com‘, @pytest.fixture(scope="module") def com_variable(): return iaas
2.2、在class中使用
conftest不变,直接在class中的方法入参中传入即可
import requests,pytest from Learning.variable import * # 定义变量 #url = "https://www.baidu.com" class TestClass(object): #global url #在此获取全局变量,并将其设置为TestClass类的全局变量 def setup_class(self): print("start...") #直接在此传入即可 def test_get(self,com_variable): #global url #在此获取全局变量,并将其设置为test_get方法内的全局变量 res = requests.get(url=com_variable[‘url‘]) assert res.status_code == 200 if __name__ == ‘__main__‘: pytest.main()
推荐第二种方式!
以上是关于pytest参数化的两种方式的主要内容,如果未能解决你的问题,请参考以下文章
参数化(parametrize)allure用例描述的两种方式 第二种重点