这里说下pytest接口自动化的工程项目的基本结构(个人的工程结构),项目工程主要使用pytest、pymysql、requests、pyyaml、allure-pytest、pytest-rerunfailures、pytest-xdist、filelock等插件。
首先工程结构
- api_test [工程名称]
- api 存放接口的封装方法,方法中一般存着接口的传参、接口地址及请求方式信息 如下:
class API(HttpClinet):
...
def selectUser(self, userid, **kwargs):
url = '/select/{}'.format(userid)
return self.post(url, **kwargs)
...
-
- base [基本信息] 一般存放封装的接口请求方式、headers最基础的信息、request方法、基本模块等信息。 如下:
class HttpClient:
headers ={
"content-type": "application/json; charset=UTF-8",
"source": 501
}
...
def get(self, path, **kwargs):
return self.request(path, 'GET', **kwargs)
def request(self, path, method, data=None, json=None,**kwargs):
...
if method == "GET":
rsp = self.session.get(url, **kwargs)
...
return rsp
-
- common [基础的公共方法] 发送邮件、数据库操作、读取数据、加载文件、json解析等方法
- config [配置文件] 数据库、项目地址、日志设置等配置文件。如下:
mysql:
host: 127.0.0.1
port: 3306
username: xxxxxx
password: xxxxxx
db: database
-
- data [测试数据] username、password、errorCode等
- operations [接口拼接] 存放拼接好的接口,在实际用例脚本中直接传对应参数值调用即可。如下
class O_Oprations:
...
def login(self, username, password):
payload = {
"username" : username,
"password" : password,
...
}
res = core_ip.login(json = playload)
return = res
-
- conftest [封装的测试用例的通用方法] 目的是为了简化测试用例脚本,便于统一维护,提高可读性 如下:
@pytest.fixture(scope = 'session')
def login_fixture():
username = basedata["user"]["username"]
password = basedata["user"]["password"]
result = O_Oprations(token=None).login(username, password)
baseToken = json.loads(result.content)["userInfo"]["token"]
yield result.content
这里,我们为了测试用例脚本的执行,资源的节省,会用到pytest里面的fixture的概念。
fixture 的作用范围
fixture里面的scope参数可以控制fixture的作用范围:session > module > class > function
- function 每一个函数或方法都会调用
- class 每一个类调用一次,一个类可以有多个方法
- module 每一个.py文件调用一次,文件内又有多个function 和 class
- session 多个文件调用一次,可以跨.py文件调用,每个.py文件就是module
接下来,我会在 pytest接口自动化(二)中,和大家一起学习 用例脚本 单场景单接口,单场景多接口等
标签:username,...,self,接口,pytest,自动化,password From: https://www.cnblogs.com/xiaocai84/p/17480941.html