pytest数据驱动(最简单)
第一种:通过yaml文件获取数据(一维列表)
data.yaml文件内容如下:
- 软件测试 - 单元测试 - 自动化测试 - 性能测试 - 测试开发 - 测试架构师
测试用例内容如下:
@pytest.mark.parametrize(data, yaml.load(open(data.yml, r))) def test_ddt(data): url=https://www.baidu.com/search/query?key= header = {Accept: "application/json", Content-Type: "application/json; charset=utf-8", Accept-Encoding: "gzip, deflate, br"} res=requests.get(url+data, header) assert res.status_code==200
第二种:通过yaml文件获取数据(二维列表)
data.yaml文件内容如下:
#用例1 - api_name: page_title url: http://www.baidu.com/ header = {Accept: "application/json", Content-Type: "application/json; charset=utf-8", Accept-Encoding: "gzip, deflate, br"} data: { "status_code": 200 }
#用例2 - api_name: searching url: http://www.baidu.com/ header = {Accept: "application/json", Content-Type: "application/json; charset=utf-8", Accept-Encoding: "gzip, deflate, br"} data: { "status_code": 200 }
#用例3 - api_name: login url: http://www.baidu.com/ header = {Accept: "application/json", Content-Type: "application/json; charset=utf-8", Accept-Encoding: "gzip, deflate, br"} data: { "status_code": 200 }
测试用例内容如下:
@pytest.mark.parametrize(data, yaml.load(open(data.yml, r))) def test_ddt(data): api_name = data[api_name] url=data[url] header = data[header] res=requests.get(url + api_name, header) assert res.status_code ==data[data][status_code]
第三种:通过yaml文件获取数据(@pytest.fixture)
@pytest.fixture() def login(request): name = request.param print(f"== 账号是:{name} ==") return name data = ["pyy1", "polo"] @pytest.mark.parametrize("login", data, indirect=True) def test_name(login): print(f" 测试用例的登录账号是:{login} ")
@pytest.fixture() def logins(request): param = request.param print(f"账号是:{param[username]},密码是:{param[pwd]}") return param data = [ {"username": "name1", "pwd": "pwd1"}, {"username": "name2", "pwd": "pwd2"} ] @pytest.mark.parametrize("logins", data, indirect=True) def test_name_pwd(logins): print(f"账号是:{logins[username]},密码是:{logins[pwd]}")
# 多个fixture @pytest.fixture(scope="module") def input_user(request): user = request.param print("登录账户:%s" % user) return user @pytest.fixture(scope="module") def input_psw(request): psw = request.param print("登录密码:%s" % psw) return psw data = [("name1", "pwd1"), ("name2", "pwd2")] @pytest.mark.parametrize("input_user,input_psw", data, indirect=True) def test_more_fixture(input_user, input_psw): print("fixture返回的内容:", input_user, input_psw) name = ["name1", "name2"] pwd = ["pwd1", "pwd2"] @pytest.mark.parametrize("input_user", name, indirect=True) @pytest.mark.parametrize("input_psw", pwd, indirect=True) def test_more_fixture(input_user, input_psw): print("fixture返回的内容:", input_user, input_psw)
资料获取方法
【留言777】
三连之后我会在评论区挨个私信发给你们~
上一篇:
5款热门的远程控制软件,让你事半功倍
下一篇: