自动化软件测试 -- web自动化实战 -- 测试用例和基础项目

项目实战

需求分析

业务场景覆盖

业务分拆多个页面

页面元素分析

难点分析

一、项目计划

(1)制定测试计划:考虑能遇见的活动集合及异常风险;制定有效的测试计划可以直接决定项目是否成功;提早构思项目异常的弥补方案

(2)测试范围:制定测试范围一定要定义清楚测试范围;范围不清晰就不知道项目什么时候完成;范围不清晰会导致标准无法确定

(3)项目设定目标:项目范围;项目设计的业务类型;项目的大小;项目的风险评估

(4)规划活动:围绕项目的目标;避免无效的活动

项目简介
此项目是为了自动化地实现在去哪儿网网订购火车票的目的
项目启动的前置条件
1)去哪儿网工作正常
2)自动化测试环境准备完毕
项目覆盖场景
场景的确定需要根据性能需求分析得出:
1)火车票查询界面
2)车次列表界面
3)去哪儿网账号登录界面
4)订单信息界面

二、测试用例

用例ID模块名测试的功能输入测试步骤预期结果测试结果级别
qn_book_ticket_001火车票预订预订火车票

1、打开火车票查询网址

2、输入正确的出发站、到达站、日期等信息

3、选择正确的想要预订的车次

4、输入正确的乘客信息

1、正确打开火车票预订界面

2、信息可以正常输入,并输入的是正确的

3、可以正常跳转到订单页面

qn_book_ticket_02火车票预订预订火车票

1、打开火车票查询网址

2、输入错误的出发站、到达站、日期等信息

1、正确打开火车票预订界面

2、信息无法正常输入,或者信息可以输入但无法进行下一步操作

qn_book_ticket_03火车票预订预订火车票

1、打开火车票查询网址

2、不输入出发站、到达站、日期等信息

1、正确打开火车票预订界面

2、信息无法正常输入,无法进行下一步操作

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome("chromedriver.exe")
url = "https://www.qunar.com/"

driver.get(url)
driver.maximize_window()
action = ActionChains(driver)

#输入出发站、到达站,并且在旁边点一下
driver.find_element_by_name("fromCity").click()
driver.find_element_by_name("fromCity").send_keys("北京")
action.move_by_offset(0,0)
action.click()
action.perform()

driver.find_element_by_name("toCity").send_keys("上海")
action.move_by_offset(0,0)
action.click()
action.perform()

#先清除掉之前的日期,再输入新的日期,点集搜索
driver.find_element_by_name("fromDate").send_keys(Keys.CONTROL,"a")
driver.find_element_by_name("fromDate").send_keys(Keys.BACKSPACE)
driver.find_element_by_name("fromDate").send_keys("2022-06-01")
driver.find_element_by_class_name("button-search").click()
time.sleep(2)

#找到购买按钮,点击购买
driver.find_element_by_xpath('//*[@id="list_listInfo"]/ul[2]/li/div/div[7]/a[1]').click()
time.sleep(2)
driver.find_element_by_name("contact_name").send_keys("张三")
driver.find_element_by_name("contact_phone").send_keys("12345678901")


time.sleep(2)
driver.quit()

三、优化项目和项目分层

代码重构:测试代码层、业务代码层、基础代码层

基础代码层:

from selenium import webdriver
from datetime import date, datetime, timedelta
import xlrd


def date_n(n):
    return str(date.today() + timedelta(days=int(n)))


driver = webdriver.Chrome("chromedriver.exe")


def get_driver():
    return driver


# noinspection PyDeprecation
def byname(element):
    return driver.find_element_by_name(element)


# noinspection PyDeprecation
def xpath(element):
    return driver.find_element_by_xpath(element)


def open_url(url):
    driver.get(url)
    driver.maximize_window()


def close():
    driver.close()


# ishead 是否有标题,有True,没有就False默认没有
def read_excel(filename, index, ishead=False):
    xlsx = xlrd.open_workbook(filename)
    sheet = xlsx.sheet_by_index(index)

    data = []
    for i in range(sheet.nrows):
        if i == 0:
            if ishead:
                continue
        data.append(sheet.row_values(i))

    return data


if __name__ == '__main__':
    read_excel("date.xlsx", 0, True)

业务服务层:

from selenium.webdriver.common.action_chains import ActionChains
from qunar.base_function import *
import time
from selenium.webdriver.common.keys import Keys


def book_ticket(start, end, n, name, phone):
    driver = get_driver()
    url = "https://train.qunar.com/"
    open_url(url)
    time.sleep(2)
    action = ActionChains(driver)

    # 输入出发站、到达站,并且在旁边点一下
    byname("fromStation").clear()
    byname("fromStation").send_keys(start)
    action.move_by_offset(0, 0)
    action.click()
    action.perform().clear()
    byname("toStation")
    byname("toStation").send_keys(end)
    action.move_by_offset(0, 0)
    action.click()
    action.perform()

    date_1 = date_n(n)
    print(date_1)

    byname("date").send_keys(Keys.CONTROL, "a")
    byname("date").send_keys(Keys.BACKSPACE)
    byname("date").send_keys(date_1)
    action.move_by_offset(0, 0)
    action.click()
    action.perform()
    byname("stsSearch").click()

    time.sleep(2)

    # 找到购买按钮,点击购买
    xpath('//*[@id="list_listInfo"]/ul[2]/li/div/div[7]/a[1]').click()
    time.sleep(2)
    byname("contact_name").send_keys(name)
    byname("contact_phone").send_keys(phone)

    time.sleep(2)
    close()

测试代码层:

from qunar.qunar_book import book_ticket
from qunar.base_function import read_excel
import pytest

data = read_excel("date.xlsx", 0, True)


@pytest.mark.parametrize(["start", "end", "n", "name", "phone"], data)
def test_book_ticket(start, end, n, name, phone):
    book_ticket(start, end, n, name, phone)


if __name__ == '__main__':
    pytest.main(["-s", "test_qunar_book.py"])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值