寻找测试功能模式

时间:2012-06-13 15:00:04

标签: python unit-testing

我为我的项目创建了一些单元测试。

我有几个自己的单位课程。 但是许多测试用例原则上是相似的:

  1. 添加内容
  2. 添加元素
  3. 检查此
  4. 例如:

    Player.add_weapon("name")
    Player.get_weapons()
    for w in weapons:
     - check the validity bla bla
    
    Warehouse.add_package("name")
    Warehouse.get_packages()
    for p in packages:
     - check the validity bla bla
    

    你看,上下文不同但程序相同。 这是我的想法:(但也许它存在一个良好的处理模式)

    def mytestfunction(ut_instance, test_obj, add_method_as_string, getlist_method_as_string):
        add_obj = None
        get_obj_list = None    
        exec("add_obj=test_obj.%s" % add_method_as_string)        
        exec("get_obj_list=test_obj.%s" % getlist_method_as_string) 
    
        ut_instance.assertEqal(len(get_obj_list()), 0, msg="We need a empty test object")
        item = add_obj("lala")
        list = get_obj_list()
    
        #check this ..and so on ...
        ....
        pass
    

    它有效,但也许你知道一个更聪明的解决方案。例如,控制期望或使用不同的参数。

1 个答案:

答案 0 :(得分:0)

问题不是低效的测试工厂方法;问题是你的潜在测试范例。单元测试应检查某些对象或方法的行为,而不是对象组成。

根据您发布的示例,我认为您应该检查add和get方法的边界条件,而不是关注给定数据结构中是否存在某些值。记住:行为,而不是构图。

测试更像是一门艺术,而不是一门科学。 YMMV。