01python软件测试自动化

这篇博客介绍了Python进行软件测试自动化的学习过程,包括使用selenium基础操作,结合unitTest构建自动化测试框架,以及应用Page Object模式进行更高级的框架设计。详细记录了从简单访问百度到构建自动化测试用例的步骤。
摘要由CSDN通过智能技术生成

学习笔记:

前言

本文采用视频用来学习记录
附上视频链接

一、python自动化测试?

在这里插入图片描述

在这里插入图片描述

二、学习记录

1.简单selenium访问百度代码

# 调用安装好的selenium模块
from time import sleep
from selenium import  webdriver
# 去掉小黄条
option=webdriver.ChromeOptions()
option.add_argument('disable-infobars')
# 在后端静默运行的模式,没有将浏览器页面跳转出来
# 无头模式的添加
# option.add_argument('headless')
# 生成一个chromedriver
driver = webdriver.Chrome()
# 访问指定的url
driver.get("http://www.baidu.com")
print(driver.title)
# 输入关键字
driver.find_element_by_id('kw').send_keys("软件测试")
# 点击百度一下按钮
driver.find_element_by_id('su').click()
# 等待
sleep(2)
# 点击第一条链接
driver.find_element_by_xpath('//*[@id="5"]/h3/a').click()


如何获取元素id
打开百度网址
https://www.baidu.com/

在这里插入图片描述
点击左边在这里插入图片描述
按钮在这里插入图片描述
将鼠标放在输入框中

在这里插入图片描述
可以看出id为kw
在这里插入图片描述

同样 点击左边在这里插入图片描述
按钮在这里插入图片描述
将鼠标放在搜索按钮上
在这里插入图片描述
可以查看到id为su

在这里插入图片描述
然后点击百度文库的网址跳转
如何找到百度文库的网址
同样在百度上输入关键字‘软件测试’ ,进入开发者模式,点击左边 在这里插入图片描述
按钮,找到要跳转的网页
在这里插入图片描述

单击在这里插入图片描述

在这里插入图片描述
获取到xpath

2.关键字+unitTest实现自动化测试框架

环境

在这里插入图片描述
在这里插入图片描述
一个访问百度的简单框架
目录结构:

在这里插入图片描述

在这里插入图片描述
中的代码:

import unittest
from time import sleep
from ddt import ddt,data,unpack
from web_ui.test_keyword_demo import TestKeyWords
# 实现管理测试用例,数据驱动

# 装饰器
@ddt
class TestForKey(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        self.tk = TestKeyWords('http://www.baidu.com', 'chrome')
        print('setUp')
    # 后置条件
    def tearDown(self) -> None:
        self.tk.quit_browser()
        print('tearDown')
    # 测试用例1
    @data(['id','软件测试'], ['id','软件开发'])
    @unpack
    # *元组的形式
    # **表示字典,基于键值对
    def test_1(self, locator,input_value):
        self.tk.input_text(locator, 'kw', input_value)
        self.tk.click_element('id', 'su')
        sleep(3)
    # @data('软件测试', '软件开发')
    # def test_1(self,input_value):
    #     self.tk.input_text('id', 'kw', input_value)
    #     self.tk.click_element('id', 'su')
    #     sleep(3)

    # # 测试用例2
    # def test_2(self):
    #     self.tk.input_text('id', 'kw', '软件开发')
    #     self.tk.click_element('id', 'su')
    #     sleep(3)


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


在这里插入图片描述

中的代码

# 导包
from selenium import webdriver
class TestKeyWords(object):
    # 初始化
    def __init__(self,url,browser_type):
        self.driver=self.open_brower(browser_type)
        self.driver.get(url)

    #调用浏览器
    def open_brower(self, browser_type):
        if browser_type == 'chrome':
           driver=webdriver.Chrome()
           return  driver
        elif browser_type == 'firefox':
            driver=webdriver.Firefox()
            return driver
        else:
            print('type error')

    # 定位元素
    def locator(self,locator_type,value):
        if locator_type=='xpath':
            el=self.driver.find_element_by_xpath(value)
            return el
        elif locator_type=='id':
            el=self.driver.find_element_by_id(value)
            return el
        elif locator_type=='name':
            el=self.driver.find_element_by_name(value)
            return el
    # 输入
    def input_text(self, locator_type,value,text):
        self.locator(locator_type,value).send_keys(text)

    # 点击
    def click_element(self,locator_type,value):
        self.locator(locator_type,value).click()
    # 关闭浏览器,释放资源
    def quit_browser(self):
        self.driver.quit()

# 套用到任何网站
# 开源自动化测试框架
if __name__ == '__main__':
    tk=TestKeyWords('http://www.baidu.com','chrome')
    tk.input_text('id','kw','软件测试')
    tk.click_element('id','su')
    # tk = TestKeyWords('http://www.jd.com', 'chrome')
    # tk.input_text('id', 'key', '软件测试')
    # tk.click_element('xpath', '//*[@id="search"]/div/div[2]/button')

3. PO模式设计实现自动化测试框架

在这里插入图片描述
在这里插入图片描述
一个百度页面的关键字+unitTest自动化测试框架
项目目录:
在这里插入图片描述
在这里插入图片描述
中的代码实现:

# 基本类
from selenium import webdriver
# 定义一个driver对象

class BasePage(object):

    # 构造函数
    def __init__(self,driver):
        self.driver=driver
    # 元素定位,使用元组
    def locator(self,locator):
        return self.driver.find_element(*locator)
    # 关闭浏览器
    def quit_brower(self):
        self.driver.quit()
    # 访问
    def visit(self,url):
        self.driver.get(url)



中代码的实现:


from selenium import webdriver
from selenium.webdriver.common.by import By
# Python的模块名与类名是在两个不同的名字空间中,初学者很容易将其弄混淆。比如你在交...
# 以页面做为对象
from basePage.base_page import BasePage


class SearchPage(BasePage):
    input_id = (By.ID, 'kw')
    click_id = (By.ID, 'su')

    # def input_text(self, locator,input_text):
    #     self.locator(locator).send_keys(input_text)
    #
    # def click_element(self,locator):
    #     self.locator(locator).click()

    def input_text(self, input_text):
        self.locator(self.input_id).send_keys(input_text)

    def click_element(self):
        self.locator(self.click_id).click()

if __name__ == '__main__':
    url='http://www.baidu.com'
    driver=webdriver.Chrome()
    sp=SearchPage(driver)
    sp.visit(url)
    sp.input_text('软件测试')
    sp.click_element()

优化一点将

中的代码改为:


from selenium import webdriver
from selenium.webdriver.common.by import By
# Python的模块名与类名是在两个不同的名字空间中,初学者很容易将其弄混淆。比如你在交...
# 以页面做为对象
from basePage.base_page import BasePage

# SearchPage类集成于BasePage这个类
class SearchPage(BasePage):
    #搜索框元素
    input_id = (By.ID, 'kw')
    # 百度一下按钮
    click_id = (By.ID, 'su')

    # def input_text(self, locator,input_text):
    #     self.locator(locator).send_keys(input_text)
    #
    # def click_element(self,locator):
    #     self.locator(locator).click()
    #  对输入框进行对内容的输入
    def input_text(self, input_text):
        self.locator(self.input_id).send_keys(input_text)
    # 点击一下百度一下按钮,实现本次搜索,操作节点
    def click_element(self):
        self.locator(self.click_id).click()
        # 定义一个调试检验的函数
    def check(self,url,input_text):
        self.visit(url)
        self.input_text(input_text)
        self.click_element()
if __name__ == '__main__':
    url='http://www.baidu.com'
    driver=webdriver.Chrome()
    sp=SearchPage(driver)
    sp.check(url,'软件测试')
    # sp.visit(url)
    # sp.input_text('软件测试')
    # sp.click_element()

执行成功
添加unittest管理测试用例
创建
在这里插入图片描述
其中
的代码为:

import unittest

from pageObject.search_page import SearchPage
from ddt import ddt,data,unpack
from selenium import webdriver
from time import sleep


@ddt()
class TestCases(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        driver = webdriver.Chrome()
        self.sp = SearchPage(driver)
    # 后置条件
    def tearDown(self) -> None:
        self.sp.quit_brower()
    # 测试用例1
    @data(['http://www.baidu.com','软件测试'],['http://www.baidu.com','软件开发'])
    @unpack
    def test_1(self,url,input_text):
        self.sp.check(url,input_text)
        sleep(3)

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

 

运行成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值