全栈软件测试自动化—生成漂亮的测试报告

在这里插入图片描述

1.2.3 生成漂亮的测试报告

终于到了展示测试报告的环节了,下面我们学习使用HTMLTestRunner制作一张精美的HTML格式的测试报告。需要先下载HTMLTestRunner这个py文件,读者可以自行上网搜索。另外,为了后续方便使用,请确保此文件存放在测试脚本的同级目录中。

接下来我们所要做的事情非常简单,只需要把之前代码中的runner = unittest.TextTestRunner()替换成下面这段代码。

  import HTMLTestRunner

      report_file = file('demo.html', 'wb')

      runner = HTMLTestRunner.HTMLTestRunner(

          stream = report_file,

          title = 'My first demo',

          description = 'My demo description'

      )

这样就完成了HTML测试报告的整合了。下面对代码进行分析。

首先,import HTMLTestRunner这个语句比较容易理解,即在调用模块之前需要导入HTMLTestRunner。而这个模块就是之前已经下载好并放入同级目录的HTMLTestRunner。然后,我们会看到如下代码。

report_file=file('demo.html',?'wb')

它的含义是创建一个HTML文件并命名为demo.html,wb则表示以二进制的方式写入。

以下代码是使用HTMLTestRunner创建测试报告最核心、最关键的部分。

	    runner = HTMLTestRunner.HTMLTestRunner(
      stream = report_file,
      title='My first demo',
      description='My demo description'
  )

这里实例化了HTMLTestRunner模块下的HTMLTestRunner类。在实例化此类时,通常传入的参数是stream、title及description。第一个参数stream是文件流,此处只需要传入之前创建好的report_file文件对象即可;第二个参数title是报告的标题,用户可以设置任何自己想要的标题;第三个参数description是为报告写下的简单描述。
最后,调用runner对象的run方法并传入先前创建好的测试集对象。代码如下。

runner.run(data_driven_suite())

把data_driven_suite这个函数所返回的测试集对象传入runner.run方法中,这样就完成了一张精美的HTML测试报告。下面给出完整的代码。

  import unittest
  from selenium import webdriver

  class BookFlight(unittest.TestCase): 
      def __init__(self,username,password): 
           unittest.TestCase.__init__(self, methodName='test_login') 
           self.username = username
           self.password = password

      def setUp(self): 
           self.driver = webdriver.Firefox()

      def test_login(self): 
           driver = self.driver
           driver.get("Mercury Tours登录页面")
           assert "Mercury Tours" in driver.title
           username_edit = driver.find_element_by_name("userName")
           password_edit = driver.find_element_by_name("password")
           login_button = driver.find_element_by_name("login")
           username_edit.send_keys(self.username) 
           password_edit.send_keys(self.password) 
           login_button.click()
           assert "Find a Flight" in driver.title, "\n==>
            username:{0}\n==> password:{1}". \
            format(self.username,self.password) 

      def tearDown(self): 
           self.driver.close()


  if __name__ == "__main__":
      def data_driven_suite():
           data_repositories = [
           {'usr':'mercury','pwd':'mercury'},
           {'usr':'mercury1','pwd':'mercury'},
           {'usr':'mercury2','pwd':'mercury'},
           ] 

          tests = []
          for data in data_repositories: 
              tests.append(BookFlight(data['usr'],data['pwd'])) 
          return unittest.TestSuite(tests) 

      import HTMLTestRunner

      report_file = file('demo.html', 'wb') 
      runner = HTMLTestRunner.HTMLTestRunner(
           stream=report_file, 
           title='My first demo', 
           description='My demo description'
           ) 

      runner.run(data_driven_suite())

生成的HTML测试报告如图1.18所示。

全栈软件测试自动化—生成漂亮的测试报告_第1张图片

图1.18 完美的测试报告

从图1.18中可以看出,就像我们预期的那样,一共有3组数据,只有一组通过(pass)测试,另外两组都失败(fail)了。

关于测试报告中的各个关键元素,说明如下:标题是My first demo;Start Time是脚本运行的开始时间;Duration是测试执行的持续时间;Status是脚本运行结果的总状态,即多少个用例成功,多少个用例失败。

这里还有一个过滤功能,用户既可以查看所有用例的执行结果,也可以只查看局部用例,如那些运行失败的用例。

1.3 本章小结

本章开篇引用了一个经典的实例,是为了让读者可以更快上手Selenium,快速了解它的精华内容。如果能掌握这一章的内容,就可以编写一些简单的自动化测试脚本了。尤其是对于那些要借助数据驱动的自动化测试用例,完全可以套用本章的模板,非常有效。

以上笔者的经历更像一张横向的知识网,创建了一个交流平台 914172719 ,群内有各种技术同行交流、学习资料、面试经验等。其中用到jenkins、docker、moutebank、python编程等,还需要花更多的精力去深入学习,当每项技能都能掌握到一定深度,才能称为一个完整的知识体系。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

你可能感兴趣的:(程序员,软件测试,IT,单元测试,python,程序人生,测试工程师,软件测试)