1、接口:是一些预先定义的函数,目的是提供应用成语与开发人员基于某软件或硬件得以访问的一组历程的能力,而又无需访问源码,或理解内部工作机制的细节。

2、接口测试:是对系统组件之间的接口进行测试,主要是效验数据交换,传递和控制管理过程,以及相互逻辑依赖关系。

3、接口测试的优势:

  1)节约测试成本

 根据数据模型推算,底层的一个程序bug可能引发ui层8个bug左右,而底层的bug更容易引起全网的死机,接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。

  2)接口测试门槛低

接口测试不同于单元测试,接口测试是站在用户角度对系统接口进项全面高效持续的检测。

  3)效益更高

将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的效益产出就越高。

4、接口功能自动化测试流程:

需求分析->用例设计->脚本开发->测试执行->结果分析

5、单例接口测试

import requests

# 接口的url
url = " "

# 接口的参数
params = {
            "sex": 1,
            "month": 12,
            "date": 12
        }

r = requests.request("post", url, params=params)

# 打印返回结果
#print(r.text)

# 为了让结果看的更加清楚一点,我取来翻译的字段
import json
d = json.loads(r.text)
print(d)

  

引入unittest库优化代码,并设计多种测试用例,
import requests, unittest, json, HTMLTestRunner,os


class ncbw(unittest.TestCase):
    def setUp(self):
        url = ""

    def test1(self):
        url = ""
        params = {
            "sex": 1,
            "month": 12,
            "date": 12
        }


        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)

    def test2(self):
        params = {
            "sex": 2,
            "month": 12,
            "date": 12
        }

        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)
        print(d)
    def test3(self):
        params = {
                "sex": "1",
                "month": 13,  #月份错误
                "date": 12
        }

        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)
        print(d)
    def test4(self):
        params = {
                "sex": "",  #性别不能为空
                "month": 12,
                "date": 12
        }

        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)

    def test5(self):
        params = {
                "sex": "1",
                "month": "",#月份为空
                "date": 12
        }

        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)
        print(d)
    def test6(self):
        params = {
                "sex": "1",
                "month": "12",
                "date": "",#日期为空
        }

        url = ""
        r = requests.request("post", url=url, params=params)
        import json
        d = json.loads(r.text)
        print(d)

    def tearDown(self):
        pass


if __name__ == "__main__":
    report_path = "D:\\python3test\\lizi\\result.html"
    re_open=open(report_path,"wb")
    suite=unittest.TestLoader().loadTestsFromTestCase(ncbw)
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=re_open,
        title='新年星云情报局接口测试',
        description='用例执行情况'
    )
    runner.run(suite)
    re_open.close()

  遇到报告文件不运行的情况因为运行的是测试框架中的内容,是没有测试报告的输出的,要以非unittest模式运行,也就是用python直接运行

解决方案:点右上角,点开:Edit Configurations,展开Python 和 Python tests这两个选项,Python tests这个选项下移除脚本,然后点保存,重新执行脚本。