zoukankan      html  css  js  c++  java
  • selenium、unittest——POM框架并出报告

    学习隔壁大神的POM框架,结合自己的用例进行修改整理并执行,操作遇到的主要问题是如何分布的写各个模块并统一运行,每个文件夹想要import里面的模块需要有__init__模块

    POM主要分为三个部分,1、将selenium的基本操作写为自己的函数,2、将用例操作运用自己的操作函数写出步骤,3、加入unittest模块和报告模块,当然后还需要一个执行的主函数部分

    #encoding=utf-8
    from selenium import webdriver
    import time

    driver = webdriver.Firefox()
    driver.implicitly_wait(30)

    class Page(object):
      def __init__(self, driver, base_url=u"http://www.baidu.com/"):
        self.driver = driver
        self.base_url = base_url
        self.timeout = 30

      def find_element(self, *loc):
        return self.driver.find_element(*loc)

      def input_clear(self,loc):
        self.find_element(*loc).clear()

      def input_text(self, loc, text):
        self.find_element(*loc).send_keys(text)

      def click(self, loc):
        self.find_element(*loc).click()

      def get_title(self):
        return self.driver.title

    from selenium.webdriver.common.by import By
    from P.basePage import Page

    reload(sys)
    sys.setdefaultencoding("utf-8")

    class SearchPage(Page):

      search_input = (By.ID, u'kw')

      search_button = (By.ID, u'su')

      def __init__(self, driver, base_url=u"http://www.baidu.com/"):
        Page.__init__(self, driver, base_url)

      def gotoPage(self):
        print u"打开首页: ", self.base_url
        self.driver.get(self.base_url)

      def input_search_clear(self):
        print u"清除默认值 "
        self.input_clear(self.search_input)

      def input_search_text(self, text=u"自动化测试报告"):
        print u"输入搜索关键字: 自动化测试报告 "
        self.input_text(self.search_input, text)

      def click_search_btn(self):
        print u"点击 确定 按钮"
        self.click(self.search_button)

    这两个类的本质是将元素的定位和元素的操作分开

    #encoding=utf-8
    import unittest
    import sys,time

    from selenium import webdriver
    from P.searchPage import SearchPage

    reload(sys)
    sys.setdefaultencoding("utf-8")


    # 百度搜索测试
    class TestSearchPage(unittest.TestCase):

      def setUp(self):
        self.driver = webdriver.Firefox()

      def testSearch(self):
        driver = self.driver
        # 百度网址
        url = u"http://www.baidu.com/"
        # 搜索文本
        text = u"自动化测试报告"
        # 期望验证的标题
        assert_title = u"自动化测试报告_百度搜索"
        print assert_title

        search_Page = SearchPage(driver, url)

        # 启动浏览器,访问百度首页
        search_Page.gotoPage()

        #清空默认值
        search_Page.input_search_clear()

        # 输入 搜索词
        search_Page.input_search_text(text)

        # 单击 百度一下 按钮进行搜索
        search_Page.click_search_btn()

        time.sleep(2)
        # 验证标题
        self.assertEqual(search_Page.get_title(), assert_title)

      def tearDown(self):
        self.driver.quit()

        断言结果正确

    以上为POM框架,添加批量执行和报告

    #encoding=utf-8
    import unittest
    import sys

    import HTMLTestRunner
    from O.testSearchPage import TestSearchPage

    if __name__ == '__main__':
        testunit = unittest.TestSuite()
        testunit.addTest(TestSearchPage('testSearch'))

        # 定义报告输出路径
        htmlPath = u"page_demo_Report.html"
        fp = file(htmlPath, "wb")

        runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
          title=u"baidu测试",
          description=u"测试用例结果")
        runner.run(testunit)

        fp.close()

    生成报告

  • 相关阅读:
    liunx命令二
    移动App专项测试
    web安全性测试用例
    jmeter分布式测试的坑(转)
    全新linux中通过编译方式安装nginx
    Centos的yum源更换为国内的阿里云源
    配置spotlight连接linux服务器
    linux创建新用户并给予root权限
    linux下安装sar
    liunx中安装禅道
  • 原文地址:https://www.cnblogs.com/garvicker/p/9523953.html
Copyright © 2011-2022 走看看