基于python的测试框架behave----context

使用behave时,每一步对应的方法都需要参数context,那么context是什么,为什么都需要传这个对象?

在所有用例中的context都是behave.runner.Context类的一个实例
关于behave.runner.Context(runner)类
这个类用来存放用例运行期间的上下文信息,你可以添加带有任意值的任意属性到这个对象。
在你的用例运行期间这个对象会自动添加和删除额外的命名空间层。有一个“根”命名空间,其他的命名空间供features和scenarios使用。


有一些属性名已经被behave占用,所以为了你设置的值不被覆盖掉最好不要在context对象上添加下列属性名:
1.feature
  在开始测试一个新的feature时添加,是Feature的一个实例。在feature外访问不到该属性(比如environment中的before_all和after_all方法中)。
2.scenario
  这是在开始测试一个新的scenario时添加(包括scenario outline对应的每一个独立的scenario),是Scenario类的一个实例。只在scenario范围内可以被访问到。
3.tags
  当前活跃的(active,翻译)tags集合, 是feature和scenario两者的tag集合。在feature范围内可访问。
4.aborted
  这个属性在“根”命名空间中设置,在用户中断一个正在跑的测试时被设为True(键盘产生的中断除外), 初始值是False。也可以通过把这个值设为True来产生一个用户中断
5.failed(todo 不知道有什么意义)
  这个属性在“根”命名空间中设置,当一个step失败时被设置为True.初始值是False
6.table
  这个是step级别的设置,例如:
  Given set init info
  | name | score |
  | tom | 20 |
  | janey | 30 |
  context.table就可以获取到 Given行下表的内容
7.text
  这个也是step级别的设置,用来存放跟当前step相关的多行文本, 例如:
  Give set init info
  '''
  set student name in the name col
  set score in the score col
  '''
  context.text = '''xxxxxxx'''中间的文本内容

posted @ 2016-06-20 17:55  web k  阅读(1495)  评论(0编辑  收藏  举报