做旅游网站会遇到什么问题,成都网站关键词,网站背景图片素材,资料软件
概述
前面一章讲解了单个接口的测试#xff0c;但是实际项目中#xff0c;因为权限和登录状态的限制#xff0c;大部分接口没办法直接访问到#xff0c;这时候我们想访问到一个系统的接口#xff0c;就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息…
概述
前面一章讲解了单个接口的测试但是实际项目中因为权限和登录状态的限制大部分接口没办法直接访问到这时候我们想访问到一个系统的接口就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息作为参数传递给下游进行测试
举个栗子
base_url : 定义接口的基础 URL。所有需要这个 URL 的测试函数都可以使用这个 fixture。
pytest.fixture
def base_url():return http://localhost:8081请求访问登录接口
参数封装
pytest.fixture
def login_payload():return {username: admin,password: 123,captcha: 12,uuid: 10f53b80-d83f-4431-8fb2-09280942522a}之后请求访问登录页面
pytest.fixture
def token(base_url, login_payload):response requests.post(f{base_url}/user/login, jsonlogin_payload)assert response.status_code 200data response.json()assert data[code] 200token data[data][token]return token
这样我们就能拿到用户的token信息 将用户的请求头信息按照系统存放的规则存入请求头中 def test_course_page(base_url, token):headers {Token: token}params {pageNum: 1,pageSize: 10,name: 微表情,teacherName: ,courseModule: }response requests.get(f{base_url}/course/page, headersheaders, paramsparams)# 打印响应详细信息print(Status Code:, response.status_code)print(Headers:, response.headers)print(Response Text:, response.text)# 断言部分assert response.status_code 200assert response.headers[Content-Type] application/jsondata response.json()# 检查响应中的具体字段assert data[code] 200assert msg in dataassert data in datacourse_data data[data]assert total in course_dataassert data in course_dataassert len(course_data[data]) 0# 检查第一个课程的具体字段first_course course_data[data][0]assert id in first_courseassert name in first_courseassert first_course[name] 微表情专业课
全部代码实例如下
import requests
import pytestpytest.fixture
def base_url():return http://localhost:8081pytest.fixture
def login_payload():return {username: admin,password: 123,captcha: 12,uuid: 10f53b80-d83f-4431-8fb2-09280942522a}pytest.fixture
def token(base_url, login_payload):response requests.post(f{base_url}/user/login, jsonlogin_payload)assert response.status_code 200data response.json()assert data[code] 200token data[data][token]return tokendef test_course_page(base_url, token):headers {Token: token}params {pageNum: 1,pageSize: 10,name: 微表情,teacherName: ,courseModule: }response requests.get(f{base_url}/course/page, headersheaders, paramsparams)# 打印响应详细信息print(Status Code:, response.status_code)print(Headers:, response.headers)print(Response Text:, response.text)# 断言部分assert response.status_code 200assert response.headers[Content-Type] application/jsondata response.json()# 检查响应中的具体字段assert data[code] 200assert msg in dataassert data in datacourse_data data[data]assert total in course_dataassert data in course_dataassert len(course_data[data]) 0# 检查第一个课程的具体字段first_course course_data[data][0]assert id in first_courseassert name in first_courseassert first_course[name] 微表情专业课# 运行测试
if __name__ __main__:pytest.main([-s, test_course_page.py])
运行结果 更新参数模拟登录失败的情况 类似的我们可以将参数改为可以动态录入可以将其定义为函数的参数并通过函数调用传递不同的参数值。这样可以使测试更加灵活并且可以轻松地重复执行相同的测试用例以覆盖不同的情况。