pytest参数化和执行

参数化有两种

1、使用pytest.fixture

1、使用pytest.fixture标记数据

#定义数据,数据必须是列表
undata = [{"username":"xue111","password":'123456'},{"username":"xue222","password":'234567'},{"username":"xue333","password":'345678'},{"username":"xue444","password":'456789'}]

def id(fixture_vaule):
    t = fixture_vaule
    return "username,password{0}".format(t)


#fixture标记函数 undata 表示需要标记的数据列表
@pytest.fixture(params=undata,ids=id)
def username(request):
    return request.param

2、根据标记方法名调用参数

    #username,表示使用哪个fixture标记的函数
    def test_sign_up(self,username):

        url = "http://192.168.3.7:8080/admin/register"
        body = {
  "email": "[email protected]",
  "icon": "",
  "nickName": "",
  "note": "",
  "password": username["password"],
            "username": username["username"]
                   }



        r = requests.post(url = url, json=body)
        print(r.request.body)
        assert True == r.text.__contains__("200")

3、执行并验证


pytest参数化和执行_第1张图片
image.png

使用pytest.mark.parametrize

@pytest.mark.parametrize('username,password',[('admin','123456'),('wwwwww','123456'),('eeeeee','123456')])
    def test_sign_up_2(self, username,password):
        url = "http://192.168.3.7:8080/admin/register"
        body = {
            "email": "[email protected]",
            "icon": "",
            "nickName": "",
            "note": "",
            "password": "123456",
            "username": "xue000"
        }
        body["username"] = username
        body["password"] = password
        r = requests.post(url=url, json=body)
        print(r.request.body)
        print(r.text)
        print(r.json()["data"])
        assert r.json()["data"] == None

用例执行

pytest -v

执行整个项目中的测试用例,并显示详细信息

pytest -v 路径

执行某个包下边的测试用例

pytest -v 文件路径

执行某个测试文件中的测试用例

pytest -v 文件路径::测试类

执行某个测试类中的测试用例

pytest -v 文件路径::测试类::测试方法

执行某个测试用例

使用pytest.mark标记测试用例并执行

1、使用pytest.mark打标记

pytest参数化和执行_第2张图片
image.png

2、执行

pytest参数化和执行_第3张图片
image.png

3、执行多个标记

pytest参数化和执行_第4张图片
image.png

你可能感兴趣的:(pytest参数化和执行)