编程语言
首页 > 编程语言> > BDD表现Python需要创建一个世界地图来保存值

BDD表现Python需要创建一个世界地图来保存值

作者:互联网

我不太熟悉Python但是我已经使用Python行为设置了BDD框架,我现在想要创建一个包含数据的世界地图类,并且可以在所有场景中检索.

例如,我将有一个世界级,我可以使用:

World w 

w.key.add('key', api.response)

在一个场景和另一个场景中,我可以使用:

World w

key = w.key.get('key'). 

编辑:

或者,如果存在使用上下文或类似行为的内置方式,则可以保存属性,并且可以在所有方案中检索这些属性.

像生菜一样,你可以使用世界http://lettuce.it/tutorial/simple.html

我在场景之间尝试过这种方法,但它似乎并没有捡到它

class World(dict):
    def __setitem__(self, key, item):
        self.__dict__[key] = item
        print(item)

    def __getitem__(self, key):
        return self.__dict__[key]

在场景A中一步设置项目:w.setitem(‘key’,response)

在场景B中的另一个步骤中获取项目:w.getitem(‘key’,)

这显示了一个错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python\lib\site-packages\behave\model.py", line 1456, in run
    match.run(runner.context)
  File "C:\Program Files (x86)\Python\lib\site-packages\behave\model.py", line 1903, in run
    self.func(context, *args, **kwargs)
  File "steps\get_account.py", line 14, in step_impl
    print(w.__getitem__('appToken'))
  File "C:Project\steps\world.py", line 8, in __getitem__
    return self.__dict__[key]
KeyError: 'key'

似乎世界并没有在运行的步骤之间保留值.

编辑:

我不确定如何使用environment.py,但可以看到它有一种在步骤之前运行代码的方法.如何调用environment.py中的soap客户端调用,然后将其传递给特定步骤?

编辑:

我在environment.py中发出了请求并对值进行了硬编码,如何将变量传递给environment.py并返回?

解决方法:

它在python行为术语中被称为“上下文”.步骤定义函数的第一个参数是behave.runner.Context类的一个实例,您可以在其中存储您的世界实例.请参阅the appropriate part of the tutorial.

标签:python,bdd,suds,python-behave
来源: https://codeday.me/bug/20190611/1217818.html