测试报告原理 Export Test Results工具使用 自动化测试登录页面 HTML TestRunner实现自动化测试 自动监测并生成测试报告案例

在使用自动化测试登录页面前,先学习一下理论。什么是HTML测试报告?为什么要生成测试报告?以及生成测试报告的方式。

一、什么是HTML测试报告

概念:HTML测试报告就是执行完测试用例后以HTML(网页)方式将执行结果生成报告。


二、为什么要生成测试报告

  1. 测试报告是本次测试目的最终体现形态
  2. 测试报告内包含了由本次测试用例的详情

三、HTML生成报告的方式

  1. Export Test Results (UnitTest自带的)
  2. HTML TestRunner(Python 标准库单元测试模块的扩展)

四、Export Test Results的使用

当我们在使用UnitTest库的时候,运行代码,会自动调用Export Test Results插件:
代码

import unittest

def add(x, y):
    return x+y
    
class TestCase_01(unittest.TestCase):
    def test_01(self):
        # 断言相等,arg1等于arg2实际结果
        self.assertEqual(2, add(1, 1))
        
    def test_02(self):
        # 断言arg1是arg2的子串,如果不是返回fail
        self.assertIn("ac","abcdefg")
            
if __name__ == '__main__':
    unittest.main()

Export Test Results工具使用在这里插入图片描述
测试报告截图,如下:
在这里插入图片描述


五、HTML TestRunner的使用(日常使用重点)

HTML TestRunner 是 Python 标准库单元测试模块的扩展。它生成易于使用的 HTML 测试报告
为什么说它是日常使用的重点呢?既然是自动化测试,那么你在运行之后再点一下是什么鬼?如果有一百个用例文件需要测试呢?点一百次?这是不符合日常使用的。所以,Python封装了一个单元测试模块的扩展HTML TestRunner,易于使用的 HTML 测试报告。

  1. HTML TestRunner下载
    python2版下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html,首先要下 HTMLTestRunner.py 文件,将下载的文件放入…\python\Lib目录下)。
    python3版下载地址链接:https://pan.baidu.com/s/1prHP_QwcRCnWoQnL3kb0aw ,提取码:dcnp ,因为我是python3版本,而在使用过程中,我是直接调用的,并没有放入…\python\Lib目录下)。

  2. 创建一个cases文件夹,在文件内创建两个用例(将下代码复制两份即可):
    代码

import unittest

def add(x, y):
    return x+y

class TestCase_01(unittest.TestCase):
    def test_01(self):
        # 断言相等,arg1等于arg2实际结果
        self.assertEqual(2, add(1, 1))

    def test_02(self):
        self.assertIn("ac","abcdefg")

    def test_03(self):
        # 断言相等,arg1等于arg2实际结果
        self.assertEqual(3, add(1, 1))
  1. 创建一个".py",调用HTML TestRunner文件,代码如下:
    注意点:因为我HTMLTestRunner.py放在tool文件下,使用".tools.HTMLTestRunner"调用时,加".“有歧义会报错,所以在运行之前可以保留”.",还能有提示,在运行时删除,就不会报错
# 调用unittest模块
import unittest
# 因为我HTMLTestRunner.py放在tool文件下,使用".tools.HTMLTestRunner"调用时,
# 加"."有歧义会报错,所以在运行之前可以保留".",还能有提示,在运行时删除,就不会报错
from tools.HTMLTestRunner import HTMLTestRunner

# defaultTestLoader搜索cases目录下所有py文件,*表示匹配所有文件
suite = unittest.defaultTestLoader.discover("./cases", pattern="*.py")

with open("./reports/测试报告.html", "wb") as f:
    runner = HTMLTestRunner(stream=f,title="测试报告",description="测试用例")
    runner.run(suite)
  1. 运行结果,保存,在浏览器中打开
    在这里插入图片描述

六、使用HTML TestRunner实现自动化测试,并输出测试报告

  1. 先作准备工作,创建login文件夹,在login文件夹下分别创建reports、image、tools文件夹,reports存放测试报告,image存放每个实例的截图(为减少扯淡保存证据),tools存放HTML TestRunner.py文件。
    在这里插入图片描述
  2. 先编写自动化测试脚本代码login.py文件:
    代码如下:
from selenium import webdriver
import unittest
import time


# 以参数的形式传入浏览器、用户名、密码
def iwebshop_login_test(driver=None, username=None, password=None):
    # 测试网址
    driver.get("http://127.0.0.1:8088/iwebshop")
    # 搜索“登录”,点击
    driver.find_element_by_link_text("登录").click()
    driver.implicitiy_wait(5)
    # 以name属性定位用户名,输入值
    driver.find_element_by_name("login_info").send_keys(username)
    # 以name属性定位密码,输入值
    driver.find_element_by_name("password").send_keys(password)
    # 点击class_name属性,对应的是登录
    driver.find_element_by_class_name("submit_login").click()
    # 暂停1秒
    time.sleep(1)
    # 截图,保存到image
    driver.save_screenshot("./image/" + username + password + "登录.png")
    return driver.find_element_by_class_name("loginfo").test


# 下面为测试用例,每个实例修改用户名和密码即可
class TestCase_01(unittest.TestCase):
    def test_login01(self):
        # 定义浏览器
        self.driver = webdriver.Chrome()
        # 用户名为zhangsan
        username = "zhangsan"
        # 断言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "123123"))
        # 退出
        self.driver.quit()
        
    def test_login02(self):
        # 定义浏览器
        self.driver = webdriver.Chrome()
        # 用户名为lisi
        username = "lisi"
        # 断言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "123123"))
        # 退出
        self.driver.quit()
        
    def test_login03(self):
        # 定义浏览器
        self.driver = webdriver.Chrome()
        # 用户名为lisi
        username = "zhangsan1"
        # 断言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "1123123"))
        # 退出
        self.driver.quit()
  1. 编写测试报告生成脚本文件HTML_TestRunner.py,代码如下:
    代码
import unittest
from .tools.HTMLTestRunner import HTMLTestRunner
from .login import TestCase_01

suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestCase_01))

with open("./reports/登录测试.html", "wb") as f:
    runner = HTMLTestRunner(stream=f, title="iwebshop登录测试", description="iwebshop登录是否成功的测试")
    runner.run(suite)
  1. 运行结果,保存,在浏览器中打开查看:
    a. 运行脚本,实例的截图:
    在这里插入图片描述
    b. 测试报告截图,zhangsan1实例失败,如下:
    在这里插入图片描述

七、最后

自动化脚本在工作中可以帮助测试人员节省很多的时间和精力,代码相当简单,假设我们有一百个用例需要测试,复制粘贴就完事了,运行最多几分钟就ok。最后,你们学会了吗?
注:文中部分描述可能出现实例和用例两种叫法,其实是一样的,在Python中可以叫实例,而在测试中叫用例。

发布了53 篇原创文章 · 获赞 69 · 访问量 2074
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览