Skip to content

1.单元测试

python
import unittest


class UnittestForPy(unittest.TestCase):

    #测试方法1
    def test_add(self):
        x = 3
        y = 5
        assert x==y,"不等于"

    #测试方法2
    def test_remove(self):
        print("我就看看")




if __name__ == '__main__':
    #这里可以执行所有的方法,但是必须以test_开头才可以
    unittest.main()

2.常见的断言

python
assertEqual(a, b)     a == b      
assertNotEqual(a, b)     a != b      
assertTrue(x)     bool(x) is True      
assertFalse(x)     bool(x) is False      
assertIsNone(x)     x is None     
assertIsNotNone(x)     x is not None   
assertIn(a, b)     a in b    
assertNotIn(a, b)     a not in b

3.生成html报告

3.1 网上下载HTMLTestRunner.py文件,保存到 venv---lib---site-packages文件夹里就可以了

3.2 代码

python
# -*- coding:utf-8 -*-

import unittest
#中文版
import HTMLTestReportCN
#英文版
# import HTMLTestRunner



#测试用例
#第一个测试类
class MyTestCase(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass


    def testCase1(self):
        self.assertEqual(2,2,"testError")


    def testCase2(self):
        self.assertEqual(2,3,"testError")

    def testCase3(self):
        self.assertEqual(2,26,"测试错误")

    def testCase4(self):
        self.assertEqual(2,1,"测试错误")

    def testCase5(self):
        pass

#第二个测试类
class APITestCase(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def testCase1(self):
        self.assertEqual(2, 2, "testError")

    def testCase2(self):
        self.assertEqual(3, 3, "testError")

    def testCase3(self):
        self.assertEqual(5, 5, "testError")

    def testCase4(self):
        self.assertEqual(2, 1, "测试错误")


#添加Suite
def Suite():
    #定义一个单元测试容器
    suiteTest = unittest.TestSuite()
    #将测试用例加入到容器
    suiteTest.addTest(MyTestCase("testCase1"))
    suiteTest.addTest(MyTestCase("testCase2"))
    suiteTest.addTest(MyTestCase("testCase3"))
    suiteTest.addTest(MyTestCase("testCase4"))
    suiteTest.addTest(MyTestCase("testCase5"))
    #第二个类的测试内容
    suiteTest.addTest(APITestCase("testCase1"))
    return suiteTest

'''
问题:代码写的没问题,执行也成功了,但就是无法生成HTMLTestRunner的报告
其实这是编辑器搞得鬼,编辑器为了方便用户执行测试,都有一项功能,可以用编辑器来调用unittest或者nose来执行测试用例,这种情况下,执行的只是用例或者套件,而不是整个文件,写在main里的代码是不会被执行的!!自然无法生成测试报告
我们在如果想要生成测试报告,那么一定要注意右键执行时选择的右键菜单,一定要当做文件执行,不要让编辑器当做用例执行
'''
if __name__ == '__main__':
    #确定生成报告的路径
    filePath ='D:\\Report_CN.html'
    fp = open(filePath,'wb')
    #生成报告的Title,描述
    runner = HTMLTestReportCN.HTMLTestRunner(
        stream=fp,
        title='自动化测试报告',
        #description='详细测试用例结果',
        tester='打印'
        )
    #运行测试用例
    runner.run(Suite())
    # 关闭文件,否则会无法生成文件
    fp.close()

注意:普通的执行方式为python tests模式,只是单元测试方式来执行,如果要生成html文件的话,要使用python模式,

4.生成xml版报告

4.1 代码

python
import unittest
import xmlrunner


# 导入这个模块
class My(unittest.TestCase):

    def test1(self, a, b, c):
        self.assertEqual(a + b, c)


if __name__ == '__main__':
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(My))
    runner = xmlrunner.XMLTestRunner(output='report')  # 指定报告放的目录
    runner.run(test_suite)

4.2 生成方式和生成xml文件是一样的,都需要手动调整