一、需求:计算2个数相加之和


代码结构如图

 

 

1.用例数据

addata.csv

1,2,3
5,5,10
10,100,110

2.读取csv文件utils

readcsv.py

import csv


class ReadCsv:
    def read_csv(self):
        """
        读取CSV文件内容
        :return:
        """
        my_list = []
        with open("..//data//addata.csv", "r", encoding="utf-8") as f:
            csv_content = csv.reader(f)
            for csv_con in csv_content:
                my_list.append(csv_con)

            return my_list

3.测试函数功能

caladd.py

class CalcAdd:
    """
    计算两数之和
    """

    def add(self, a, b):
        return a + b

4.执行测试用例代码

calctest.py

import unittest
from testfunc.caladd import CalcAdd
from utils.readcsv import ReadCsv

rea = ReadCsv()


class CalcTest(unittest.TestCase):
    def setUp(self):
        print("开始")

    def tearDown(self):
        print("结束")

    def test001(self):
        m_list = rea.read_csv()
        for m_li in m_list:
            ca = CalcAdd()
            act = ca.add(int(m_li[0]), int(m_li[1]))
            self.assertEqual(act, int(m_li[2]))
            # print(m_li[0],m_li[1],m_li[2])


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

 

 

生成测试用例报告

用例模板

HTMLTestRunner.py

import unittest
from testcase.calctest import CalcTest
from utils.HTMLTestRunner import HTMLTestRunner


class SuiteTest(unittest.TestCase):
    def test_suite(self):
        case_list = ['test001']
        mysuit = unittest.TestSuite()
        for case in case_list:
            mysuit.addTest(CalcTest(case))
            with open('../report.html', 'wb') as f:
                HTMLTestRunner(
                    stream=f,
                    title='求两个数之和测试',
                    description='函数功能验证',
                    verbosity=2  # 为每个测试用例生成测试报告

                ).run(mysuit)


if __name__ == '__main__':
    unittest.main

测试套件

caltestsuite.py

import unittest
from testcase.calctest import CalcTest
from utils.HTMLTestRunner import HTMLTestRunner


class SuiteTest(unittest.TestCase):
    def test_suite(self):
        case_list = ['test001']
        mysuit = unittest.TestSuite()
        for case in case_list:
            mysuit.addTest(CalcTest(case))
            with open('../report.html', 'wb') as f:
                HTMLTestRunner(
                    stream=f,
                    title='求两个数之和测试',
                    description='函数功能验证',
                    verbosity=2  # 为每个测试用例生成测试报告

                ).run(mysuit)


if __name__ == '__main__':
    unittest.main