python3.6+unittest+requests+HtmlTestRunner实现接口自动化流程

  unittest是一个特别强大的测试框架,既可以和selenium包一起做功能自动化,也可以和requests包一起做接口自动化的测试

  基础用法:1)导入模块unittest+requests+HtmlTestRunner

                   2)用unittest.TestCase派生一个测试类 Class MyTest(unittest.TestCase)

                   3)起始模块setUp(),结束模块tearDown(),以及测试用例模块test_case()  【测试用例必须是test_ 开头】

                   4)添加测试集合(测试套件),测试集合中再添加测试用例,最后执行测试集合,生成html测试报告                      添加测试集合suite及测试用例

    suite = unittest.TestSuite()     # 构造测试集
    suite.addTest(MyTest("test_case1"))  # 加入测试用例
    suite.addTest(MyTest("test_case2"))

选择测试报告保存的路径和格式,执行测试集suite

   with open(report_path, 'wb') as report:
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(suite)

代码如下:

import os
import sys
import unittest
import requests
import time
from HTMLTestRunner import HTMLTestRunner
# from unittest  import TestCase,TestLoader,TestSuite

sys.path.append('E:/Py-workspace/test/testbaidu.py')
ABSPATH = os.path.abspath(os.path.realpath(os.path.dirname(__file__)))


class MyTest(unittest.TestCase):
    def setUp(self):
        print("setUp")

    def test_case1(self):
        self.r = requests.get("https://www.baidu.com")
        self.r.status_code
        self.r.encoding = 'utf-8'
        self.r.text
        # r.json()
        assert self.r.status_code == 200
        assert "百度一下" in self.r.text
        print("通过")

    def test_case2(self):
        assert 11 == 200

    def tearDown(self):
        #  self.driver.quit()
        print("tearDown")


if __name__ == '__main__':
    # 构造测试集
    suite = unittest.TestSuite()     # 构造测试集
    suite.addTest(MyTest("test_case1"))  # 加入测试用例
    suite.addTest(MyTest("test_case2"))

    # 执行测试
    date = time.strftime("%Y%m%d")      # 定义date为日期,time为时间
    time = time.strftime("%Y%m%d-%H%M%S")
    path = "./report/api/"
    # 判断是否定义的路径目录存在,不能存在则创建
    if not os.path.exists(path):
        os.makedirs(path)
    else:
        pass
    report_path = path+time+"report.html"      # 将运行结果保存到report,名字为定义的路径和文件名,运行脚本

    report_title = u"测试报告"
    desc = u'接口自动化测试报告详情:'

    with open(report_path, 'wb') as report:
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(suite)
    # 关闭report,脚本结束
    report.close()

测试报告如下:

python3.6+unittest+requests+HtmlTestRunner实现接口自动化流程_第1张图片

你可能感兴趣的:(python)