基於python的測試框架behave----context

web k發表於2016-06-20

使用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'''中間的文字內容

相關文章