008 selenium html报告

‘‘‘
时间:2018/12/06
功能:html报告
目录:
    一: 工程结构
    二: 测试报告 - 一般
    三: 测试报告 - HTMLTestRunner
‘‘‘

一: 工程结构

1 :  一级目录 : 工程名称 - web_auto_test

2 :  二级目录 : 测试用例 - case

3 :  二级目录 : 公共模块 - common

4 :  二级目录 : 测试报告 - report

5 :  二级文件 : 运行文件 - run_all.py

# coding:utf-8
import unittest

class IntegerArithmeticTestCase(unittest.TestCase):
    def testAdd(self):  # test method names begin with ‘test‘
        self.assertEqual((1 + 2), 3)
        self.assertEqual(0 + 1, 1)
    def testMultiply(self):
        self.assertEqual((0 * 10), 0)
        self.assertEqual((5 * 8), 40)

if __name__ == ‘__main__‘:
    unittest.main()

1 :  test001_case_count.py

# coding:utf-8
from selenium import webdriver
import time
import unittest

class LoginTest(unittest.TestCase):
    ‘‘‘登录类的案例‘‘‘
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()   # 编辑器问题

    def setUp(self):
        self.driver.get("http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html")

    def tearDown(self):
        self.is_alert_exist()
        self.driver.delete_all_cookies() # 退出登录
        self.driver.refresh()

    def get_login_username(self):
        try:
            t = self.driver.find_element_by_css_selector("#userMenu>a").text
            print(t)
            return t
        except:
            return ""

    def is_alert_exist(self):
        ‘‘‘判断alert是不是在‘‘‘
        try:
            time.sleep(2)
            alert = self.driver.switch_to.alert
            text = alert.text
            alert.accept() # 用alert 点alert
            return text
        except:
            return ""

    def test_01(self):
        ‘‘‘登录成功的案例‘‘‘
        time.sleep(2)
        self.driver.find_element_by_id("account").send_keys("admin")
        self.driver.find_element_by_name("password").send_keys("123456")
        self.driver.find_element_by_id("submit").click()
        # 判断是否登陆成功
        time.sleep(3)
        t = self.get_login_username()
        print("获取的结果:%s"%t)
        self.assertTrue("admin" == t)

    def test_02(self):
        ‘‘‘登录失败的案例‘‘‘
        time.sleep(2)
        # 错误账号和密码
        self.driver.find_element_by_id("account").send_keys("admin1112")
        self.driver.find_element_by_name("password").send_keys("")
        self.driver.find_element_by_id("submit").click()
        # 判断是否登陆成功
        time.sleep(3)
        t = self.get_login_username()
        print("登录失败,获取结果:%s"%t)
        # self.assertTrue("" == t)
        self.assertTrue(False == True)  # 断言失败截图

if __name__ == "__main__":
    unittest.main()

1 :  test002_case_login_chandao.py

二: 测试报告 - 普通 

# coding:utf-8
import unittest
import os

# 路径兼容 - windows/mac
cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
cur_path = os.path.join(cur_path, "case")           # 拼接路径

# 显示结果 - unnitest
pattern = "test*.py"    # 匹配文件
discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
print(discover)

runner = unittest.TextTestRunner()
runner.run(discover)
D:\ProgramTools\Python\python.exe "D:/ProgramTools/PyCharm 5.0.4/PycharmProject/web_auto_test/run_all.py"
..<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test001_case_count.IntegerArithmeticTestCase testMethod=testAdd>, <test001_case_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test002_case_login_chandao.LoginTest testMethod=test_01>, <test002_case_login_chandao.LoginTest testMethod=test_02>]>]>]>
admin
获取的结果:admin
.登录失败,获取结果:
F
======================================================================
FAIL: test_02 (test002_case_login_chandao.LoginTest)
登录失败的案例
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\ProgramTools\PyCharm 5.0.4\PycharmProject\web_auto_test\case\test002_case_login_chandao.py", line 67, in test_02
    self.assertTrue(False == True)  # 断言失败截图
AssertionError: False is not true

----------------------------------------------------------------------
Ran 4 tests in 24.103s

FAILED (failures=1)

Process finished with exit code 0

三: 测试报告 - HTMLTestRunner

# coding:utf-8
import unittest
import os
from common import HTMLTestRunner_cn

# 路径兼容 - windows/mac
cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
cur_path = os.path.join(cur_path, "case")           # 拼接路径

# 显示结果 - unnitest
pattern = "test*.py"    # 匹配文件
discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
print(discover)

# 路径兼容 - windows/mac
cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
report_path = os.path.join(cur_path, "report", "report.html")

# 显示结果 - HTMLTestRunner
fp = open(report_path, "wb")
runner = HTMLTestRunner_cn.HTMLTestRunner(stream = fp,                      # 报告路径
                                          title = "接口测试用例报告",       # 报告标题
                                          description = "测试用例详情报告", # 报告描述
                                          retry = 1,                        # 错误重写执行
                                          verbosity = 2)                    # 注释显示
runner.run(discover)
fp.close()

1 :  run_all.py

1 :  全部运行通过的测试报告

1 :  运行失败的测试报告

原文地址:https://www.cnblogs.com/huafan/p/10079543.html

时间: 2024-10-11 23:14:09

008 selenium html报告的相关文章

python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 运行完后,重新生成一个excel报告,结果写入excel 用unittest+ddt数据驱动模式执行 HTMLTestRunner生成可视化的html报告 对于没有关联的单个接口请求是可以批量执行的,需要登录的话写到setUpclass里的session里保持cookies token关联的

selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&amp;3)【转载】

优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 优化点击截图放大不清晰问题 增加饼图统计 失败后重试功能 兼容python2.x 和3.x 报告效果 1.生成的测试报告效果如下图,默认展示报错和异常的用例,失败重试的用例结果也会统计进去. 2.点击显示截图,可以直接显示截取的图片,无需保存到本地 table表格 1.修改表格的td后面内容,可以

selenium+python自动化91-unittest多线程生成报告(BeautifulReport)

前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生产一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备: python3.6 : BeautifulReport不支持2.7 tomorrow : pip install tomorrow安装 BeautifulReport : github下载后放到/Lib/site-packages/目录下 BeautifulReport 1.BeautifulR

selenium+python+unittest多线程生成报告(BeautifulReport)

前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备: python3.6 : BeautifulReport不支持2.7 tomorrow : pip install tomorrow安装 BeautifulReport : github下载后放到/Lib/site-packages/目录下 BeautifulReport 1.BeautifulR

Selenium with Python 008 - WebDriver 元素等待

如今大多数Web应用程序使用Ajax技术,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成的,这给元素的定位增加了困难.如果因为在加载某个元素时延迟而造成ElementNotVisibleException的情况出现,那么就会降低自动化脚本的稳定性,我们可以通过设置元素等待改善这种问题造成的不稳定. WebDriver提供了两种类型的等待:含蓄等待和明确等待.明确等待作用于特定代码块,使得WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常:而含蓄等待,属于全

selenium(python)用HTMLTestRunner导出报告(断言)信息的显示

导出报告如图所示,没有显示相关信息 修改HTMLTestRunner.py文件的763-768行,注释掉if else,保留else 的uo = o 再次运行可看到信息(测试用例中的print信息也会显示在测试报告中,断言错误信息也会显示) 当测试报告代码和测试用例分开编写时 ,在测试报告的控制台不会输出不在本窗口的print信息(多线程问题) 这只是记录下,没有什么实际的问题. 原文地址:https://www.cnblogs.com/may18/p/10456488.html

Selenium第8课 生成html报告

一.跳过测试用例 1.无条件跳过,在用例上面加一个装饰器:@unittest.skip(提示语句) 2.条件为True时跳过,加装饰器:@unittest.skipIf((条件),(提示语句)) 3.条件为False时跳过,加装饰器:@unittest.skipUnless((条件),(提示语句)) 二.测试工程 1.目录分类:cases common report run_all_cases.py 2.run_all_cases.py里面查找所有用例:discover = unittest.d

python+selenium环境搭建

一.python安装:下载安装python,安装目录为:E:\Auto\Python27 二.pip安装:进入E:\Auto\Python27\Scripts,点击easy_install-2.7.exe与pip2.7.exe 三.环境变量配置:path中添加E:\Auto\Python27:E:\Auto\Python27\Scripts 四.检查python与pip环境配置:cmd框中输入:python与pip检查环境变量是否配置成功 五.selenium安装:使用pip安装selenium

转 Python Selenium设计模式-POM

前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python selenium2开始UI级自动化测试并不是多么艰巨的任务.只需要定位到元素,执行对应的操作即可.下面我们看一下这个简单的脚本实现百度搜索. from selenium import webdriver import time driver = webdriver.Firefox() driver.i