conftest.py
import time import pytest import requests import re @pytest.fixture(scope="session") def s(): # 创建一个session对象 s = requests.session() return s #点击前置登录链接 @pytest.fixture(scope="session") def crftoken(s): url = "http://localhost/DBShopV3_Release/public/shop-user" response = s.get(url).text pattern = "<input type=\"hidden\" name=\"shopCsrf\" value=\"(.+?)\">" # 使用正则,匹配出 shopcrftoken crftoken = re.findall(pattern, response)[0] return crftoken #输入登录信息发送登录请求 @pytest.fixture(scope="session") def login(crftoken, s): url = "http://localhost/DBShopV3_Release/public/shop-user" payload = { "shopCsrf": crftoken, "loginAccount": 'test_1', "loginPassword": "123456", "httpReferer": '' } response=requests.post(url=url, data=payload).text assert "退出" in response, "登录不成功" yield #后置条件,完成所有测试之后退出登录 url = "http://192.168.2.48/DBShopV3_Release/public/shop-user/userLogout" payload = {} response = requests.get(url=url, data=payload).text assert "登录" in response , "退出不成功" #执行每一个用例所花费的时间 @pytest.fixture(scope="function" , autouse=True) def fix(): start_time=time.time() yield end_time=time.time() print(f"测试用例的执行时间:{ end_time - start_time}")
test_login.py
import pytest import requests import re @pytest.fixture(scope="session") def s(): # 创建一个session对象 s = requests.session() return s @pytest.fixture(scope="session") def crftoken(s): ''' 点击登录连接 :param s: :return: ''' url = "http://localhost/DBShopV3_Release/public/shop-user" response = s.get(url).text pattern = "<input type=\"hidden\" name=\"shopCsrf\" value=\"(.+?)\">" # 使用正则,匹配出 shopcrftoken crftoken = re.findall(pattern, response)[0] return crftoken @pytest.fixture(scope="session") def login(crftoken, s): url = "http://localhost/DBShopV3_Release/public/shop-user" payload = { "shopCsrf": crftoken, "loginAccount": 'test_1', "loginPassword": "123456", "httpReferer": '' } response = s.post(url=url, data=payload).text assert "退出" in response , "登录不成功" def test_1(login): assert 1 def test_logout(login): url = "http://192.168.3.48/DBShopV3_Release/public/shop-user/userLogout" payload = {} response = requests.get(url=url, data=payload).text assert "登录" in response , "登录不成功"