我正试图找出为文件解析器编写单元测试的最佳结构。我的parser.py
文件如下所示:
import re
import sys
import glob
from datetime import datetime
import csv
def main():
# does something
def normalizeGender(gender):
# does something
def normalizeDate(date):
# does something
def parseLine(record, delimiter):
# does something
def formatRecords(record_list):
# does something
等...
我有tests
目录,并且在一个parser_test.py
文件中,如下所示:
import unittest
class ParserTest(unittest.TestCase):
# Returns True or False.
def test(self):
self.assertTrue(True)
if __name__ == '__main__':
unittest.main()
现在,如果我想从解析器中测试所有方法,是否应该一次将它们全部导入?有东西告诉我,它们应该包装成某种模块。
答案 0 :(得分:0)
以下答案基于我的工具首选项以及我通常遵循的做法:
pytest
来执行测试test_normalizeGender
,test_normalizeDate
,test_ normalizeDate
,test_parseLine
,test_formatRecords
。但是,如果您的代码中具有多个分支的if语句,请确保尝试覆盖这些分支的可能情况。另外,如果您有for循环,我将实现一个没有元素,一个元素和多个元素的测试。请记住,在实现单元测试时,您正在测试一个单元,因此您无需在同一测试中验证所有解析器的功能。另外,您应该模拟/修补对象,方法或函数以方便测试。
我希望这会有所帮助。