接口自动化入门学习笔记,记录代码

一、
pip install 安装pytest,requsets,jsonpath等

二、
主要目录结构
在这里插入图片描述
三、
3.1api包
test_tryRunNewApi.py

import requests

class test_tryRunNewApi:

    def login(self,number, password):
        headers = {"Content-Type": "application/x-www-form-urlencoded;charset=utf-8"}
        url = "http://localhost:8081/user//test_softwareTest"
        _data = {
            "number": number,
            "password": password
        }
        # 拿到后端返回的json格式的文本,用.json()反序列化为对象 或list
        res = requests.post(url=url, headers=headers, data=_data).json()
        return res

3.2data包
test_tryRunNew.json

[
  {"case_name": "验证运行通的模板1",
  "number":  "200",
  "password":  "222"},

  {"case_name": "验证运行通的模板2",
  "number":  "200",
  "password":  "444"},

  {"case_name": "验证运行通的模板3",
  "number":  "200",
  "password":  "666"}
]

gongju.py

import json
import jsonpath

class gongju:
    # 读取json的data,做参数化
    def read_json_data(self,file):
        #为什么util文件放在其他地方,这里用相对路径有问题 ?。
        # 用json.load()轮子 从文件中读取并反序列化为 对象或list(是对象还是list,看你json文本是哪种
        f=open(file, "r", encoding="utf-8")
        jsonData = json.load(f)
        f.close()

        # list对象数组 处理转化成[(),()],因为参数化接收是要这种元组数组的格式。
        result_list = []
        for case_data in jsonData:
            result_list.append(tuple(case_data.values()))
        return result_list

    #一个接口中,每组预期的通用想要的断言内容
    def same_assert(self,res,except_number):
        #断言整体json里面的其中一对数据
        #取list值,直接跟[] 不要.[]
        assert jsonpath.jsonpath(res, '$.number')[0] == except_number

'''
if __name__ == '__main__':
    pytest.main(["-s"])
    #utils =utils()
    print(".....")
    print(utils.read_json_data("test_tryRunNew.json"))
'''

3.3cases包
test_tryRunNew.py

# 目的,测试运行一个简单的pytest用例 运行起来
# 不能用json提交,只能用表单提交才不出错,否则传值为null。 ztm鸡肋。  headers = {"Content-Type": "application/json"}
# spring boot 响应体数据格式 text/html。  为啥不是json格式? 当前不需要管先。
# #响应为啥只要返回值,没有响应状态码那些。??。   好像是自定义返回内容来加的。
#加类的话,出来不了运行按钮,运行不了用例先不管。 类方法没有class不能用,直接用创造对象直接调也方便。


#数据文件 跟转化工具放一起也没问题。  所以小问题:json文件地址为啥要同一文件下才可以。  而且main主入口统一执行项目下的测试,也会出鸡肋问题。
import pytest
from api import test_tryRunNewApi
from data.gongju import gongju
from api.test_tryRunNewApi import test_tryRunNewApi


@pytest.mark.parametrize("case_name,number, password", gongju().read_json_data('../data/test_tryRunNew.json'))
def test_login_01(case_name,number, password):
    res = test_tryRunNewApi().login(number,password)
    print("响应结果:    ")
    print(res)

    #list =jsonpath.jsonpath(res, '$.number')   print(list[0]).
    #每组预期的通用想要的断言内容,例如状态码。直接调取通用断言
    gongju().same_assert(res,'200')
    # 每组预期的特点断言,例如实体数据里的内容
    #????。每组预期的特点断言。  每组预期值都不一样,循环复用执行时怎么选择性断言呢,例如@(第1次)assert

3.4cinfig配置文件
config.py

import os.path

BASE_URL="http://192.168.43.102:8081"
BASE_PATH=os.path.dirname(os.path.abspath(__file__))

3.5main主程序文件
main.py

import pytest

if __name__ == '__main__':
    pytest.main(['-vs'])
    print("zzzzzzzzzzzzzzzz")

总结上面内容: 接口自动化测试的 封装复用,发请求,断言,这些主流程已完成。其他非主能顺势完成的 像做日志,生成测试报告还没做。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值