• 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()

    生成报告

  • 相关阅读:
    get和post的区别?
    JSP中动态include和静态include的区别?
    怎么防止重复提交
    如何解决表单提交的中文乱码问题
    http的响应码200,404,302,500表示的含义分别是?
    JSP三大指令是什么?
    session 和 cookie 有什么区别?
    Servlet API中forward()与redirect()的区别?
    Servlet的生命周期
    爬虫之Xpath的使用
  • 原文地址:https://www.cnblogs.com/garvicker/p/9523953.html
Copyright © 2020-2023  润新知