我为我的项目创建了一些单元测试。
我有几个自己的单位课程。 但是许多测试用例原则上是相似的:
例如:
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
它有效,但也许你知道一个更聪明的解决方案。例如,控制期望或使用不同的参数。
答案 0 :(得分:0)
问题不是低效的测试工厂方法;问题是你的潜在测试范例。单元测试应检查某些对象或方法的行为,而不是对象组成。
根据您发布的示例,我认为您应该检查add和get方法的边界条件,而不是关注给定数据结构中是否存在某些值。记住:行为,而不是构图。
测试更像是一门艺术,而不是一门科学。 YMMV。