将所有方法导入单元测试文件

时间:2019-07-15 17:45:50

标签: python unit-testing parsing

我正试图找出为文件解析器编写单元测试的最佳结构。我的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()

现在,如果我想从解析器中测试所有方法,是否应该一次将它们全部导入?有东西告诉我,它们应该包装成某种模块。

1 个答案:

答案 0 :(得分:0)

以下答案基于我的工具首选项以及我通常遵循的做法:

  1. 我会使用pytest来执行测试
  2. 我将为每个功能至少执行1个测试:test_normalizeGendertest_normalizeDatetest_ normalizeDatetest_parseLinetest_formatRecords。但是,如果您的代码中具有多个分支的if语句,请确保尝试覆盖这些分支的可能情况。另外,如果您有for循环,我将实现一个没有元素,一个元素和多个元素的测试。
  3. 我将所有测试都放在同一个文件中,因为它们是相关的。

请记住,在实现单元测试时,您正在测试一个单元,因此您无需在同一测试中验证所有解析器的功能。另外,您应该模拟/修补对象,方法或函数以方便测试。

我希望这会有所帮助。