继上一篇commonlib的介绍,下面我们来介绍一下框架里接口测试用例的编写,
首先,我建议将接口按功能模块划分,每个大的功能模块,单独建一个包,这样方便用例的维护。
一 测试用例的命名
首先用例以test_xxx.py命名,当然你也可以随便命名,但是为了用例的统一管理,建议统一命名~
二 测试用例的组成
之前博客也说过,接口最重要的两个参数,
1:接口地址
self.url = api_data['XXX'] # 获取接口名称
confighttp.set_url(self.url) # 将接口名称传给http配置文件中
接口地址的组成在初始化方法中获取,调用testdata中api_data的字典,获取字典中XXX的值,即是接口的参数,然后将接口参数传给set_url方法,拼接接口地址的头部信息,这个头部信息组成方法在上一篇博客中已经分享。https://blog.csdn.net/weixin_43574761/article/details/106192527
2:报文
data = {
"xxxxx"
}
接口报文,我们直接将抓到的接口报文,放到data参数中即可,然后调用requests的post方法即可,如果你是get方法,则使用confighttp.get()即可。
下面是完整的demo,XXX自行根据实际接口替换
# coding=utf-8
"""
作者:vissy@zhu
"""
import unittest
from commonlib.confighttp import ConfigHttp
from testdata.api_data import api_data
from testdata.common_data import common_data
from commonlib.connectdb import connectdb
confighttp = ConfigHttp()
# @unittest.skip('该用例线下接口不通,跳过')
class Test_XXXXX(unittest.TestCase):
'''
xxxxxx
'''
def __init__(self, *args, **kwargs):
super(Test_XXXXX, self).__init__(*args)
self.url = api_data['XXX'] # 获取接口名称
confighttp.set_url(self.url) # 将接口名称传给http配置文件中
def test_xxxx(self):
data = {
"xxxxx"
}
confighttp.set_data(data)
self.response = confighttp.post().json()
self.check_result()
def check_result(self):
connect = connectdb()
conn = connect[0]
cc = connect[1]
cc.execute("SELECT * FROM user WHERE user_id=%s" % self.user_id) # 查询
result = cc.fetchall() # 获得数据库查询结果
conn.commit()
conn.close()
# 结果验证
self.assertEqual(self.response['responseStatus']['errorcode'], 0, '接口连接错误')
self.assertEqual(self.response['basic']['name'], result[0][7], '用户名错误')
特别说明
1:测试方法必须以test开头,是因为unittest默认寻找test开头的方法,当然,如果你想自定义,也是可以的,改一下源码里的默认值即可。不建议改哈,了解即可,无关紧要的东西。路径(我的是mac电脑)/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py,
2:check_result(self)是否需要数据库连接,自己选择,不需要的话,全部拿掉
3:结果验证,一般常用的方法有:
assertEqual,判断两个参数值是否相等 assertLessEqual,判断第一个参数值是否小于等于第二个参数值 assertIn,判断第一个参数是否存在于第二个参数中
4:接口的验证方式由你根据实际接口来判断,你可以验证多条,也可以验证一条
5:如果同一个接口,需要多条测试用例验证,你可以在同一个测试类下面,定义多个方法来,比如:def test_a(self): def test_aa(self):,每个方法中,输入不同的请求报文即可。
6:如果某个用例需要跳过,那么在测试类上面加上,这样在执行用例的时候,该接口下的用例,会直接跳过。
@unittest.skip('该用例线下接口不通,跳过')
至于测试用例中引用了testdata里的数据,而数据是如何组成的和调用的,下一篇博客将继续分享~
大家如有任何问题,可以加我的微信:zx1187463903,拉你进软测的微信群,一起学习讨论。
如果该篇博客,对你有帮助,开心的同时请美女小编喝杯咖啡也是极好的呀。-_-