Python BDD自动化测试框架初探

小说:贷上钱互联网仲裁作者:邓帝更新时间:2018-10-20字数:98831

“师太你也是老江湖了,应该看出你的弟子差不多是对吴应熊芳心暗许了,而他又救过你的弟子,那么就直接看看他内心如何吧。”艾斯德斯说道:“如果他真的和你的弟子说的那样是我说谎,胡编乱造的话,那么今天我就不杀她,如果是假的,我请师太将他交给我吧。”

2018手机签到赚钱软件

这个时候,慕寻真则是偷偷的碰了碰叶扬的手臂,叶扬微微一愣,有些诧异的看向她。只见她小声的说道:“这里是别的世界,你有那么多钱吗?!”
当天太子周佑大病,水米不进,便联合御马监大太监黄太监拥立清河王周灵运为帝。立刻得到了新晋权贵、掌控军权的玄侯纪太虚跟定北侯纪丹青的拥护。于第二日便登基,接受百官朝贺。追谥大行皇帝周极为武宗、至道昭肃孝皇帝!

南极仙翁坐骑被斩,却不惊不怒,似乎这一切都在他预料之中。他斜眼瞥了通风一眼,道:“好刀!”

1. 什么是BDD

BDD全称Behavior Driven Development,译作"行为驱动开发",是基于TDD (Test Driven Development 测试驱动开发)的软件开发过程和方法。

BDD可以让项目成员(甚至是不懂编程的)使用自然语言来描述系统功能和场景,从而根据这些描述步骤进行系统自动化的测试。(详见附录4.1)

2. 常用BDD框架介绍

目前常用的BDD测试框架有Ruby中的Cucumber,Python中的Behave、Lettuce及Freshen等。

基本的流程如下图所示(Lettuce官方图):

 

简单来说就是"写用例->跑测试->看结果->写实现->看结果"这样的一个循环。

Behave网站列出了上面提到的几个自动化测试框架的对比(详见附录4.2),基于此原因,本文选择behave来介绍Python BDD自动化测试框架。

3. Behave示例

3.1 Behave安装

pip install behave # 全新安装
pip install -U behave # 更新

3.2 基础知识

3.2.1 Gherkin语法

上文提到的几种BDD框架均使用Gherkin语法,这是一种简单易懂的语言,使用关键字来定义系统特征和测试。

使用Gherkin语法编写的feature文件基本结构如下:

Title (one line describing the story/feature)
 
    As a     [role]
    I want   [feature]
    So that  [benefit]
 
    Scenario: Title1 (for Behaviour 1)
 
        Given  [context or setup]
        And   [some more context]...
        When  [event occurs]
        Then  [expected outcome]
        And   [another outcome]...
 
    Scenario: Title2 (for Behaviour 2)
        ...

3.2.2 断言模块

使用BDD测试框架前,需要选择一个好用的断言模块。Python有很多可用的断言模块(下表),本文我们选择hamcrest模块为例。

Matcher Library Description
Native assert Starting point, but not enough information when assert fails.
hamcrest First assertion matcher library, now part of JUnit4. Supports several programming languages: http://code.google.com/p/hamcrest/
nose.tools Part of the nose test framework
should-dsl An interesting small matcher library, http://www.should-dsl.info/
sure Provided by the maker of lettuce, github:/gabrielfalcao/sure
compare http://pypi.python.org/pypi/compare
describe http://pypi.python.org/pypi/describe

3.2.3 目录结构

Behave项目的目录格式如下:

$PROJECT/
+-- features/                   -- Contains all feature files.
|       +-- steps/
|       |     +-- step_*.py     -- Step definitions for features.
|       +-- environment.py      -- Environment for global setup...
|       +-- tutorial*.feature   -- Feature files.

3.3 Behave示例

我们以fibnacci数列计算为例,来了解下behave框架结构及如何使用(网上基本都是以阶乘或WEB页面为例,为显示本文的原创性,我们以fib数列为例

首先,比较pythonic的实现fib数列的代码如下:

# -*- coding:utf-8 -*-
def fibs(num):
    a=b=1
    for i in range(num):
        yield a
        a,b=b,a+b

print list(fibs(10))

使用behave进行自动化测试的详细步骤如下:

1. 新建目录fib,在此目录下新建文件fib.feature,内容如下

Feature:Calc Fib
    In order to introduce Behave
    We calc fib as example
 
  Scenario: Calc fib number
     Given we have the number 10
      when we calc the fib
      then we get the fib number 55

2. 新建目录fib/steps,在此目录下新建文件fib.py,内容如下

from behave import *
from hamcrest import *
 
def fibs(num):
    a=b=1
    for i in range(num):
        yield a
        a,b=b,a+b
 
@given("we have the number {number}")
def have_number(context,number):
    context.fib_number = int(number)
 
@when("we calc the fib")
def calc_fib(context):
    context.fib_number=list(fibs(context.fib_number))[-1]
 
@then("we get the fib number {number}")
def get_number(context,number):
    context.expected_number = int(number)
    assert_that(context.fib_number, equal_to(context.expected_number),"Calc fib number: %d" %context.fib_number)

这段Python代码主要分为三部分:

@given部分将输入的number=10转为整形并存入变量中

@when部分调用fib函数,计算fib数列值

@then 部分将计算出的fib值与预期值进行断言比较,判断结果是否相等

 

3. 切换到fib目录,执行behave命令,结果如下

 

4. Scenario Outlines场景大纲

有时相同的一个Scenario需要在很多不同的参数情况下运行,为了避免写过多重复的Scenario ,我们需要使用Scenario Outlines,如fib.feature文件内容可以修改如下:

Feature:Calc Fib
    In order to introduce Behave
    We calc fib as example
 
  Scenario Outline: Calc fib number
     Given we have the number <number>
      when we calc the fib
      then we get the fib number <fib_number>
 
      Examples: Some Numbers
        | number    | fib_number |
        | 1         | 1          |
        | 2         | 2          |
        | 10        | 55         |

执行结果如下:

 

5. 更多的beahve示例可以参考附录4.4

4. 附录

本文只对Python BDD自动化测试框架进行了简单入门级介绍,若想更深入了解BDD,可参考如下资料:

4.1 BDD详细介绍:https://pythonhosted.org/behave/philosophy.html

4.2 常用测试框架对比:https://pythonhosted.org/behave/comparison.html

4.3 Hamcrest断言模块:https://github.com/hamcrest/PyHamcrest

4.4 Behave示例:http://jenisys.github.io/behave.example/

编辑:顺戏密

发布:2018-10-20 11:29:45

当前文章:http://www.leetaemin.cn/forum.php?mod=viewthread&tid=76131

2018年挂机网赚软件 网络赚小钱 去哪找兼职 手机游戏代练兼职 在家有什么兼职 大一医学生兼职 51偏门网 上班族如何赚点外快

47961 64957 37566 47514 63516 3454256117 70173 71450

我要说两句: (0人参与)

发布