【问题标题】:Import all methods to a unittest file将所有方法导入单元测试文件
【发布时间】:2019-07-15 17:45:50
【问题描述】:

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

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

【问题讨论】:

  • parser_test.py 应该简单地使用import parser。那么,问题是如何让您的测试运行程序知道在 parser.py 所在的目录中查找。
  • @user7496931,您的问题的答案可能主要基于意见

标签: python unit-testing parsing


【解决方案1】:

以下答案基于我的工具偏好以及我通常遵循的做法:

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

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

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多