zoukankan      html  css  js  c++  java
  • Behave + Selenium(Python) 四

    来自T先生

    今天我们开始讲讲behave的厉害的地方。

    Tag文件的使用

    在behave里面,如何来控制哪些case需要run,哪些case不需要run,这个时候就用Tag来控制。好了,接下来我用Tag文件来实现同一个脚本可以用firefox,chrome和ie三种不同的浏览器来测试。

    一、在feature文件里面新建example04文件,然后新建environment.py文件,代码如下:

    from selenium import webdriver  
    import sys

    def before_all(context):
        reload(sys)
        sys.setdefaultencoding('utf-8')
        context.baidu_url = 'http://www.baidu.com'
        
    def before_tag(context, tag):
        if tag.startswith("browser."):
            browser_type = tag.replace("browser.", "", 1)
            if browser_type == "firefox":
               context.driver = webdriver.Firefox()
            elif browser_type == "chrome":
               context.driver = webdriver.Chrome()
            else:
               context.driver = webdriver.Ie()

    def after_tag(context, tag):
        context.driver.close()

    二、在example04文件夹里面新建example04.feature文件,代码如下:

        Feature:Search behave results in baidu
        
        @browser.firefox
        Scenario: Search behave results in baidu with firefox browser
            Given Access baidu website
            When Input behave characters
            Then There are more than 1 results displaying
            
        @browser.chrome
        Scenario: Search behave results in baidu with chrome browser
            Given Access baidu website
            When Input behave characters
            Then There are more than 1 results displaying
            
        @browser.ie
        Scenario: Search behave results in baidu with ie browser
            Given Access baidu website
            When Input behave characters
            Then There are more than 1 results displaying



    三、在example04文件夹里面新建steps文件夹,然后在steps文件夹里面新建example04.py, 代码如下:

      # This Python file uses the following encoding: utf-8
    #../feature/example04/steps/example04.py

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.common.by import By

    @Given('Access baidu website')
    def step_impl(context):
        context.driver.get(context.baidu_url)


    @when('Input behave characters')
    def step_impl(context):
        context.ele_input = context.driver.find_element_by_xpath("//input[@id = 'kw']")
        context.ele_input.send_keys("behave")
        context.ele_btn = context.driver.find_element_by_xpath("//input[@id = 'su']")
        context.ele_btn.click()
        
    @Then('There are more than 1 results displaying')
    def step_impl(context):
        context.sign_link = WebDriverWait(context.driver, 60).until(
                expected_conditions.presence_of_element_located((By.CSS_SELECTOR, "div.nums")))
        context.ele_results = context.driver.find_element_by_css_selector("div.nums")
        context.expected_results = '相关结果'
        if context.expected_results in context.ele_results.text:
            assert True
        else:
            assert False

    四、打开cmd,cd到相应的路径,然后输入behave,你会发现代码分别会在firefox, chrome和IE中分别执行。 但是如果你想要只在firefox中执行,你可以使用命令 behave --tags=browser.firefox,然后你会发现仅仅打开了firefox。

    扩展: 通过tag, 你可以给一个scenario加上N个tag, 每个tag之间用空格隔开就ok, 这样的的话你也可以给scenario加上regression使其变成回归测试的。

    除了给scenario加上tag,你还可以给feature加上tag.  behave的脚本都是会把所有的feature文件放在同一个feature文件夹目录下面,然后会在steps里面放所有feature文件对应的py文件。

    然后最终的基本目录是这样子的。

  • 相关阅读:
    io学习
    asp.net文件上传进度条研究
    asp.net页面中的Console.WriteLine结果如何查看
    谨慎跟随初始目的不被关联问题带偏
    android 按钮特效 波纹 Android button effects ripple
    安卓工作室 日志设置
    安卓工作室 文件浏览器 android studio File browser
    一个新的Android Studio 2.3.3可以在稳定的频道中使用。A new Android Studio 2.3.3 is available in the stable channel.
    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial
    码云,git使用 教程-便签
  • 原文地址:https://www.cnblogs.com/liuchunxiao83/p/5179874.html
Copyright © 2011-2022 走看看