python中的多if期间返回响应

python中的多if期间返回响应,python,unit-testing,flask,Python,Unit Testing,Flask,我在做一个,我在检查两个数据库集合中的字段,所以在这期间,我必须做一个多if条件,如下所示: for doc1,doc2 in itertools.izip(docs1, docs2): if ... : if ... : response = 'Error' else: response = 'OK' else... : if ... : response =

我在做一个,我在检查两个数据库集合中的字段,所以在这期间,我必须做一个多if条件,如下所示:

for doc1,doc2 in itertools.izip(docs1, docs2):
    if ... :
        if ... :
            response = 'Error'
        else:
            response = 'OK'
    else... :
        if ... :
            response = 'Error'
        else:
            response = 'OK'
    if ... :
        if ... :
            response = 'Error'
        else ... :
            response = 'OK'
    else ... :
        if ... :
            response = 'Error'
        else ... :
            response = 'OK'
因此,如果错误发生在其中一个ifs中,我想声明一个响应,给出如下答案:
self.assert400(响应,message=“错误请求,空正文”)

当整个过程正常时,给出一个正常的回答

我只想避免写这样的话:

     if ... :
            if ... :
                self.assert400(response, message="Bad request, empty body.")
            else:
                self.assert200(response, message="OK.")
     else... : 
            if ... :
                self.assert400(response, message="Bad request, empty body.")
            else:
                self.assert200(response, message="OK.")
那么,如何实现这一目标呢


我想在它的结尾创建一个IF条件,但这不会阻止for循环吗?请帮助我?

在这种情况下,你应该考虑使用默认值,只检查错误情况:

response = "OK" # default value

for doc1,doc2 in itertools.izip(docs1, docs2):
    if ... :
        if ... :
            response = "Error"
    else... :
        if ... :
            response = "Error"

    if response == "Error":
        break

# If no errors were found, then the result must be OK
if response == "Error":
    self.assert400(response, message="Bad request, empty body.")
else:
    self.assert200(response, message="OK.")

这使得只有一个错误就足以使整个事情失败。我有点不清楚您实际上想要做什么,所以如果这不是您期望的,请发表评论。

在我看来,您并不是真正的单元测试。函数和单元测试中的结构完全相同。因此,如果代码更改,测试也必须更改。我认为测试“=”操作符不值得你花时间

我可能错了,但我认为您应该有一个函数,获取doc1和doc2并返回响应。然后对特定输入值的返回值进行单元测试。大概是这样的:

result = foo(doc1,doc2)
self.assert_equal(result.message, "Bad request, empty body.")
result = foo(doc3,doc4)
self.assert_equal(result.message, "OK.")

一般来说,将代码设置为“单元可测试”会更好。

您是否可以根据
响应的值进行if检查,然后在需要时使用
中断
退出for循环?我很难理解您想要实现什么。您正在显示的代码是单元测试还是要测试的代码?@Jylo我编辑了我的问题,您能检查一下吗?那个代码就是单元测试方法中的代码。@Jokab你能举个简单的例子吗?听起来你有真实的、可以工作的代码,你想做得更好。考虑到CoDeEvIEW.StAccExchange。com。谢谢你的代码,但是每次循环都是OK的时候,它给出一个OK消息,如果整个代码都是OK的话,我只想输入一个OK消息。@ EistNeSITNA,如果我理解正确的话:如果你发现一个错误,打印错误和退出循环。如果没有出现错误,也就是说,每个响应都正常,然后打印一次OK?是的,这是真的,但是如果循环执行100次,我在代码上打印了100次OK,如果结果正常,我只想打印一次?@Estinasitna这个答案对你有帮助吗?如果是这样,考虑接受答案。