
点击上方蓝字关注我!
python
一个简单的接口案例
sql
def test_movie_check():'http://api.douban.com/v2/movie/in_theaters' url = params = {'apikey': '0df993c66c0c636e29ecbb5344252a4a', 'start': 0, 'count': 10 } headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" } r = requests.get(url=url, params=params, headers=headers) response = r.json()'count'] == params['count'] assert response['start'] == params['start'] assert response['title'] == '正在上映的电影-北京' assert response[
pytest+yaml
shell
◆ yaml.load() : 读取yaml文件;json
◆ yaml.load_all() : 生成迭代器,若存在多块yaml文档的时候,使用解析所有文档;api
◆ yaml.dump(params1,params2) : yaml.dump将python对象生成yaml文档 params1 json格式的文档 ,params2 打卡一个文本或二进制文件,将生成的yaml文件写到文件中;微信
◆ yaml.dump_all() 将多个段输出到一个文件;app
第一步:编写yaml文件,准备测试接口数据
框架
test: case: 验证响应参数是否一致 requests: method: GET path: /v2/movie/in_theaters headers: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 : params: apikey: 0df993c66c0c636e29ecbb5344252a4a start: 0 count: 10 validate: title: 正在上映的电影-北京 count: 10 start: 0
第二步:编写test_movie.py文件,get_test_data方法返回测试数据编辑器
python的zip用法:学习
def get_test_data(filepath): case = [] # 存放测试用例名 requests = [] # 存放http请求对象 validate = [] # 存放断言 with open(filepath, encoding='utf-8') as f: data = yaml.load(f.read(), Loader=yaml.SafeLoader) case.append(data.get('test')) requests.append(data.get('requests')) validate.append(data.get('validate')) params = zip(case, requests, validate) return case, paramscases, parameters = comm_function.get_test_data('D:/workFile/test/pytest_demo/data/test_movie.yaml')list_params = list(parameters)print(list_params[0][1])
@pytest.mark.parametrize 参数化,若yaml中有多条案例,会执行屡次。
class TestInTheaters(object): def test_in_theaters(self, case, http, validate): host = 'http://api.douban.com' res = requests.request(http['method'], url=host+http['path'], headers=http['headers'], params=http['params']) response = res.json() assert response['count'] == validate['count'] assert response['start'] == validate['start'] assert response['title'] == validate['title']
欢迎小伙伴们进群一块儿学习,一块儿加油!
本文分享自微信公众号 - 软件测试小助手(gh_2282fef3410c)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。