Python接口自动化之ExtentHTMLTestRunner测试报告

  引言

  结合HTMLTestRunner做的改动,页面内容拿的HttpRunnerManager中的测试报告模板(感谢HttpRunnerManager),HttpRunnerManager是直接将结果数据传递给报告,结合原HTMLTestRunner是在执行测试的同时将结果写到测试报告中,功能还不够完善,但是基本功能都已ok;模板地址:https://github.com/wishchen/ExtentHTMLTestRunner

  示例

from ExtentHTMLTestRunner import HTMLTestRunner


filename="/*/result.html"
fp=open(filename,'wb')

runner=HTMLTestRunner(
                      stream=fp,
                      title='自动化测试报告',
                      description='用例执行情况:')

  

  在报告中展示截图:

  • 截图须和html报告在同一目录下;
  • 需要在对应的case中打印一下截图名称,截图名称以 screenshot_*.png 格式命名.
  • 报告需要的extent.js、extent.css可能下载不了,如果报告展示有问题可能是这些资源没有拿到,注意检查下。

  案例讲解

  项目结构:

  

  方法1:

from ExtentHTMLTestRunner import HTMLTestRunner
import unittest

class InterfaceTest(unittest.TestCase):
    def test_1(self):
        print("测试")
        print("screenshot_baidu.png")

    def test_2(self):
        a = 1
        b = 2
        return  a*b
if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(InterfaceTest))

    filename="result22.html"
    fp=open(filename,'wb')

    runner=HTMLTestRunner(
                          stream=fp,
                          title='自动化测试报告',
                          description='用例执行情况:')
    runner.run(suite)
    fp.close()

  运行结果:

 

 

   第二条用例没有输出什么,所以是空

 

  方法2:

  项目结构和上面是一样的,只是用例代码不一样:

__author__ = 'Leo'

from ExtentHTMLTestRunner import HTMLTestRunner
import unittest,os,requests

# 获取根目录
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# 获取指定目录test_case
TEST_CASE = os.path.join(BASE_DIR,"test_case")


class InterfaceTest(unittest.TestCase):
    def test_1(self):
        url = 'https://api.apiopen.top/getWangYiNews'
        data = {
            'page':1,
            'count':1
        }
        r = requests.post(url=url,data=data)
        print(r.text)
    def test_2(self):
        a = 1
        b = 2
        # Name and print in this format "screenshot_*.png" if you want to show screenshot in report.
        print("screenshot_baidu.png")
        return  a*b
if __name__ == '__main__':
    # suite = unittest.TestSuite()
    # suite.addTest(unittest.makeSuite(InterfaceTest))

    discover = unittest.defaultTestLoader.discover(TEST_CASE, pattern='test_002.py')

    filename="result.html"
    fp=open(filename,'wb')
    runner=HTMLTestRunner(
                          stream=fp,
                          title='自动化测试报告',
                          description='用例执行情况:')
    runner.run(discover)
    fp.close()

  运行结果:

 

 

  第二条用例使用了截图功能,如图所示:

 

   总结:

  喜欢的朋友可以学习一下,后面还可以平台化,另外对测试及测试开发感兴趣的伙伴,可以加入到我们的学习沟通群,一起提升自己!

 

posted @ 2020-07-26 02:15  全栈测试开发日记  阅读(720)  评论(0编辑  收藏  举报