Selenium学习(十八) selenium Driver之单元测试和测试报告

python单元测试简介

功能代码demo1.py

class MyClass():
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def sub(self):
        return self.x - self.y

单元测试框架unittest

import unittest
from unittset_demo.demo1 import MyClass


class MyclassTest(unittest.TestCase):
    def setUp(self) -> None:
        '''
        测试之前的准备工作
        :return:
        '''
        self.clac = MyClass(4,3)

    def tearDown(self) -> None:
        '''
        测试之后的收尾
        如关闭数据库
        :return:
        '''
        pass

    def test_add(self):
        ret = self.clac.add()
        self.assertEqual(ret,9)  

    def test_sub(self):
        ret = self.clac.sub()
        self.assertEqual(ret,-1)

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(MyclassTest('test_add'))
    suite.addTest(MyclassTest('test_sub'))

    runner = unittest.TextTestRunner()
    runner.run(suite)

一般测试方法必须以test_开头,里面可以写我们需要测试的业务逻辑
setUp就是帮我们做测试前的准备工作,比如实例化等,
tearDown可以帮我们关闭数据库等收尾操作,
self.assertEqual()将我们的结果和运行的实际结果进行比对,
suite就是我们的测试集,之后添加测试用例,用runner实例化运行。

 

python生成测试报告HTMLTestRunner

HTMLTestRunner是python第三方库,专门用来生成测试报告的,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
然后这个是不支持python3语法的,要自己改一下代码,具体更改如下

第94行: import StringIO 改为 import io
第539行:self.outputBuffer = StringIO.StringIO() 改为self.outputBuffer = io.BytesIO()
第642行:if not rmap.has_key(cls): 改为 if not cls in rmap:
第772行:ue = e.decode('latin-1') 改成 ue = e
第776行:uo = o.decode ('latin-1') 改成 uo=o
第768行:uo = o 改成 uo = o.decode('utf-8')
第774行:ue = e 改成 ue = e.decode('utf-8')
第631行:print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) 改成 print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)
第118行:self.fp.write(s) 改为 self.fp.write(bytes(s,'UTF-8'))

 

 

python代码

调用的代码见上个章节内容。

import unittest

from selenium import webdriver
import  sys
from autoTest import baseUtil
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time
from time import sleep
from HTMLTestRunner import *

from autoTest.testBug import testBug


class testBugReport(unittest.TestCase):
    # def setUp(self):
    #     pass
    #
    # def tearDown(self):
    #     pass

    ##登錄
    def test_testLogin_tc0(self):
        print(111)
        t1=testBug()
        self.assertEqual(t1.login(), True)


    ##
    def test_tc_fd_1(self):
        print("test_tc_fd_1 start")
        self.assertEqual(testBug().tc_fd_1(), True)
        print("test_tc_fd_1 end")

    def test_tc_rv_1(self):
        print("test_tc_rv_1 start")
        self.assertEqual(testBug().tc_rv_1(), True)
        print("test_tc_rv_1 end")

    def test_tc_rv_2(self):
        print("test_tc_rv_2 start")
        self.assertEqual(testBug().tc_rv_2(), True)
        print("test_tc_rv_2 end")

    def test_tc_rv_3(self):
        print("test_tc_rv_3 start")
        self.assertEqual(testBug().tc_rv_3(), True)
        print("test_tc_rv_3 end")




if __name__ == '__main__':
    print("测试套件开始。"+time.strftime("%Y%m%d_%H%M%S"))
    testsuit = unittest.TestSuite()
    # testsuit.addTest(testBugReport('test_testLogin_tc0'))     #登录不單獨測試
    testsuit.addTest(testBugReport('test_tc_fd_1'))
    testsuit.addTest(testBugReport('test_tc_rv_1'))
    testsuit.addTest(testBugReport('test_tc_rv_2'))
    testsuit.addTest(testBugReport('test_tc_rv_3'))
    #按照一定格式获取当前时间,%Y表示带世纪的年(2019),%y表示不带世纪的年(19),time.strftime()表示获得当前时间并格式化字符串
    now = time.strftime("%Y%m%d_%H%M%S")
    #将当前时间加入到报告文件名称中
    filename = r'./'+now+'result.html'
    #定义测试报告存放路径,通过open()方法以二进制写模式('wb')打开当前目录下的result.heml,如果没有,则自动创建。
    fp = open(filename,'wb')
    #定义测试报告,调用HTMLTestRunner模块下的HTMLTestRunner类,stream 指定测试报告文件,title 定义测试报告的标题,description 定义测试报告的副标题
    runner = HTMLTestRunner(stream=fp,title='自动化测试报告',description='用例执行情况:')
    #通过HTMLTestRunner的run()方法来运行测试套件中的测试用例
    runner.run(testsuit)
    #关闭测试报告
    fp.close()
    print("测试套件完成。"+time.strftime("%Y%m%d_%H%M%S"))

 

测试报告

测试报告是html文件。

成功的报告:

失败的测试报告,点击可以看到报错信息

 

参考网站:
https://www.cnblogs.com/jimmyhe/p/10852764.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值