python基于selenium的自动化测试

unittest 单元测试框
unittest组件:
Test Fixture(测试夹具) 使用测试夹具,可以定义在单个或多个测试执行之前的准备工作和测试执行之后的清理工作;
Test Case(测试用例) unittest中执行测试的最小单元,通过验证unittest提供的assert方法来验证一组特定的操作和输入以后得到的响应;
unittest提供了一个名为TestCase的基础类,可以用来创建测试用例;
Test Suit(测试套件) 一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行;
Test Runner(测试执行器)测试执行器负责测试执行调度并且生成测试结果给用户;
测试执行器可以使用图形界面、文本界面或者特定的返回值来展示测试执行结果;
Test Report(测试报告) 测试报告展示所有执行用例的成功或者失败状态的汇总;包括失败的测试步骤的预期结果和实际结果,还有整体运行状况和运行时间的汇总;

searchtest1.py
from selenium import webdriver
import unittest

class SearchTest(unittest.TestCase):  测试用例
    @classmethod #相当于标记测试夹具
    def setUpclass(cls):
        cls.driver = webdriver.Chrome(executable_path=r"C:\Users\LJ  VS LDN\Desktop\chromedriver.exe")
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()
        cls.driver.get("http://www.baidu.com")

    def test_search_by_category(self):
        self.search_field = self.driver.find_element_by_id("kw")
        self.search_field.clear()
        self.search_field.send_keys('ns')
        self.search_field.submit()

        products = self.driver.find_elements_by_xpath("//div[contains(@class, 'c-abstract')]")

        self.assertEqual(11, len(products))  #断言

    def test_search_by_category1(self):
        self.search_field = self.driver.find_element_by_id("kw")
        self.search_field.clear()
        self.search_field.send_keys('ns')
        self.search_field.submit()

        products = self.driver.find_elements_by_xpath("//div[contains(@class, 'c-abstract')]")

        self.assertEqual(10, len(products))

    @classmethod
    def tearDownclass(cls):
        cls.driver.quit()

if __name__ == '__main__':
    unittest.main(verbosity=2)

searchtest2.py

#_author:Doraemon Liu
# -*- coding:utf-8 -*-

import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By


class SearchTestHomePage(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
cls.driver = webdriver.Chrome(executable_path=r"C:\Users\LJ  VS LDN\Desktop\chromedriver.exe")
 cls.driver.implicitly_wait(15) cls.driver.maximize_window() cls.driver.get('http://www.baidu.com') def test_search_by_category(self): self.assertTrue(self.is_element_present(By.ID, "kw")) #检验id为kw的input框是否存在 def test_search_by_category1(self): self.search_field = self.driver.find_element_by_id("kw") self.search_field.clear() self.search_field.send_keys('铜钱贯') self.search_field.submit() products = self.driver.find_elements_by_xpath("//div[contains(@class, 'c-abstract')]") self.assertEqual(10, len(products)) @classmethod def tearDownClass(cls): cls.driver.quit() def is_element_present(self, how, what): """""" try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True if __name__ == '__main__': unittest.main(verbosity=2)

测试套件.py

import unittest
from searchtest1 import SearchTest
from searchtest2 import SearchTestHomePage

search_test = unittest.TestLoader().loadTestsFromTestCase(SearchTest)
search_test_homepage = unittest.TestLoader().loadTestsFromTestCase(SearchTestHomePage)

smoke_tests = unittest.TestSuite([search_test, search_test_homepage])

unittest.TextTestRunner(verbosity=2).run(smoke_tests)

猜你喜欢

转载自www.cnblogs.com/doraemon548542/p/12514403.html