对json字符串python运行测试

时间:2014-05-27 18:27:44

标签: python json

我目前正在尝试针对JSON字符串运行一些测试,但是我遇到了一些困难。

这是我到目前为止所拥有的。

class PinpyTests(jsonstr, campaign):

    data = json.loads(jsonstr)
    test = False

    def dwellTest(self):
        if self.data.get('dwellTime', None) is not None:
            if self.data.get('dwellTime') >= self.campaign.needed_dwellTime:
                # Result matches, dwell time test passed.
                self.test = True

    def proximityTest(self):
        if self.data.get('proximity', None) is not None:
            if self.data.get('proximity') == self.campaign.needed_proximity:
                # Result matches, proximity passed.
                self.test = True 

基本上,我需要运行测试,只有它们存在于json字符串中。因此,如果字符串中存在接近度,它将运行接近度测试等等(可能会有更多测试,而不仅仅是这两个测试)

当两个测试都存在时,似乎会出现问题,并且需要返回true。如果它们都返回true则测试已经过去并且类可以返回true,但是,如果驻留失败,并且接近通过,我仍然需要它失败,因为并非所有测试都通过。 (接近使它通过)。对于如何继续,我有点困惑。

1 个答案:

答案 0 :(得分:0)

首先,您的课程定义不正确。你可能想要的是一个__init__函数。为了达到理想的结果,我建议添加一个testAll方法,检查json中的每个测试,然后运行该测试。

class PinpyTests(Object):
    test = False

    def __init__(self, jsonstr, campaign):
        self.data = json.loads(jsonstr)
        self.campaign = campaign

    def testAll(self):
        passed = True
        if self.data.get('dwellTime') is not None:
            passed = passed and self.dwellTest()
        if self.data.get('proximity') is not None:
            passed = passed and self.proximityTest()
        return passed

    def dwellTest(self):
        if self.data.get('dwellTime') >= self.campaign.needed_dwellTime:
            # Result matches, dwell time test passed.
            return True
        return False

    def proximityTest(self):
        if self.data.get('proximity') == self.campaign.needed_proximity:
            # Result matches, proximity passed.
            return True
        return False