我有两个相关的模型:
class Execution(models.Model):
name = models.CharField("Test Suite Name", max_length=1024)
<...>
class TestCase(models.Model):
name = models.CharField("Test Case Name", max_length=1024)
result = models.CharField("Test Case Result", max_length=32)
execution = models.ForeignKey(Execution, on_delete=models.CASCADE)
<...>
我需要比较两次执行,设计一个结果不一致的测试用例列表
我的方法感觉很像python,运行速度也相当快,但我非常确定,使用Django子查询(或者可能是Exists()?)可以改进这一点
以下是我的代码:
execution1 = Execution.objects.get(id=id1) # Executions retrieval (irrelevant to the question)
execution2 = Execution.objects.get(id=id2)
execution1_testcases = execution1.testcase_set.all()
execution1_testcases_names = [testcase.name for testcase in execution1_testcases]
for testcase2 in execution2.testcase_set.order_by('-result', 'name'):
if testcase2.name in execution1_testcases_names:
# TODO: this most likely can be improved with Subqueries
result1 = list(filter(lambda testcase1: testcase1.name == testcase2.name, execution1_testcases))[0].result
else:
result1 = None
if result1 != testcase2.result:
<...> # discrepancy processing
目前没有回答
相关问题 更多 >
编程相关推荐