项目的开端

项目实战的流程

务必记清楚:
1、需求分析(熟悉业务,最好已经做过多次手工测试)
2、测试方案。 (为什么要自动化,主要应用场景,主要使用模块,技术选型和对比,方案特点和优势、具体运行手册、产出和效率、运行策略、维护。)
3、用例编写
4、用例评审
5、运行用例(代码编写)
6、报告

技术选型
使用哪一种语言:python / java : python开发效率更快,因为我会,python好招人,
web: selenium /:
单元测试框架:pytest / unittest:
PO 模式, 数据驱动,关键字驱动。

最好是做一个对比。
方案的特点:好招人,好维护,开发效率高。

自动化适用场景
需求稳定,不会频繁变更。
研发和测试周期长,需要频繁执行回归测试
需要在多种平台上重复运行相同测试的场景
某些测试项目通过手工测试无法实现,或者手工成本太高
被测软件的开发较为规范,能够保证系统的可测试行

在这里插入图片描述===============================================================================

案例1:

tests模块
测试登录功能

from selenium import webdriver
from selenium.webdriver.common.by import By

class TestLogin:

    def test_login_without_username_and_password(self):
        """测试没有用户名和密码的情况。
        尽量通过测试用例的函数名称表示测试的测试点。

        梳理测试步骤:、
        1、打开浏览器
        2、访问测试页面
        3、点击提交
        4、断言

        """
        driver = webdriver.Chrome()
        url = 'https://v4.ketangpai.com/User/login.html'
        driver.get(url)
        # 定位登录按钮
        login_btn = driver.find_element(By.XPATH, "//div[contains(@class, 'pt-login')]/a[@class='btn-btn']")
        login_btn.click()

		# expect 预期结果
        expected = ['账号不能为空', '密码不能为空']

		# 实际结果:
        actual = driver.find_elements(By.CLASS_NAME, 'error-tips')

		# 两次断言
        # enuerate 可以同时获取索引和值
        # for index, el in enumerate(actual):
        #     # el WebElement
        #     assert el.text == expected[index]

        # actual_value = []
        # for el in actual:
        #     actual_value.append(el.text)

        # 列表推导式
        actual_value = [el.text for el in actual]
        assert expected == actual_value
        

===========================================

案例2:


from selenium import webdriver
from selenium.webdriver.common.by import By


class TestLogin:

    def test_login_without_username_and_password(self):
        """测试没有用户名和密码的情况。
                尽量通过测试用例的函数名称表示测试的测试点。

                梳理测试步骤:、
                1、打开浏览器
                2、访问测试页面
                3、点击提交
                4、断言

                """
        driver = webdriver.Firefox()
        driver.implicitly_wait(10)
        driver.maximize_window()
        url = "https://jobs.bytedance.com"
        driver.get(url)

        # 定位登录按钮
        dl_login = driver.find_element(By.XPATH,'//a[@href="/experienced/login"]')
        dl_login.click()

        yx_login = driver.find_element(By.XPATH,'//div[contains(text(),"邮箱登录")]')
        yx_login.click()

        # 定位登录按钮
        login_btn = driver.find_element(By.XPATH,'//button[@type="button"]')
        login_btn.click()

        # expect 预期结果
        expected = ['请输入邮箱', '请输入密码']

        # 实际结果:
        actual = driver.find_elements(By.XPATH,'//div[@class="atsx-form-explain"]')

        actual_value = []
        for el in actual:
            actual_value.append(el.text)

        assert expected == actual_value

    def test_login_without_username_and_password_02(self):
        driver = webdriver.Firefox()
        driver.implicitly_wait(10)
        driver.maximize_window()
        url = "https://jobs.bytedance.com"
        driver.get(url)

        # 定位登录按钮
        dl_login = driver.find_element(By.XPATH, '//a[@href="/experienced/login"]')
        dl_login.click()

        yx_login = driver.find_element(By.XPATH, '//div[contains(text(),"邮箱登录")]')
        yx_login.click()

        usre = "111"
        driver.find_element(By.XPATH,'//input[@id="email"]').send_keys(usre)

        password = "1"
        driver.find_element(By.XPATH,'//*[@id="password"]').send_keys(password)

        # 定位登录按钮
        login_btn = driver.find_element(By.XPATH, '//button[@type="button"]')
        login_btn.click()

        # expect 预期结果
        expected = ['请输入正确的邮箱']

        # 实际结果:
        actual = driver.find_elements(By.XPATH, '//div[@class="atsx-form-explain"]')

        actual_value = []
        for el in actual:
            actual_value.append(el.text)

        assert expected == actual_value

===========================================================

案例3:


import time

from selenium import webdriver
from selenium.webdriver.common.by import By


class TestLogin:

    def test_login_without_username_and_password(self):
        """测试没有用户名和密码的情况。
                尽量通过测试用例的函数名称表示测试的测试点。

                梳理测试步骤:、
                1、打开浏览器
                2、访问测试页面
                3、点击提交
                4、断言

                """
        driver = webdriver.Firefox()
        driver.implicitly_wait(10)
        driver.maximize_window()
        url = "https://v4.ketangpai.com/User/login.html"
        driver.get(url)

        user = "135607489"
        driver.find_element(By.XPATH,'//input[@placeholder="邮箱/账号/手机号"]').send_keys(user)

        password = "wtg4444"
        driver.find_element(By.XPATH,'//input[@placeholder="密码"]').send_keys(password)

        # 定位登录按钮
        yx_login = driver.find_element(By.XPATH,'//div[@class="padding-cont pt-login"]//a[@class="btn-btn"]')
        yx_login.click()

        # 断言页面标题
        time.sleep(1)
        assert driver.current_url == "https://v4.ketangpai.com/Main/index.html"

        user_elem = driver.find_element(By.XPATH,'//a[@id="user"]//img[@class="avatar"]')
        assert user_elem.get_attribute("title") == "十七"
        

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值