【软件测试】:软件测试实战

1. ⾃动化实施步骤

1.1 编写web测试⽤例

1.2 ⾃动化测试脚本开发

common

cpp 复制代码
public class AutotestUtils {
    public static EdgeDriver driver;
    //
创建驱动对象
 
    public static EdgeDriver createDriver(){
        //
驱动对象已经创建好了
/
没有创建
 
        if( driver == null){
            driver = new EdgeDriver();
            //
创建隐式等待
 
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        }
        return driver;
    }
    public AutotestUtils(String url){
        EdgeDriver driver = createDriver();
        driver.get(url);
    }
    public List<String> getTime(){
        //
⽂件能不能按照天的维度按⽂件夹进⾏保存
 
        //
⽂件格式
 20230212-123030
毫秒
 
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");
        SimpleDateFormat sim2 = new SimpleDateFormat("yyyyMMdd");
        String filename = sim1.format(System.currentTimeMillis());
        String dirname = sim2.format(System.currentTimeMillis());
        List<String> list = new ArrayList<>();
        list.add(dirname);
        list.add(filename);
        return  list;
    }
    /**
     * 
获取屏幕截图,把所有的⽤例执⾏的结果保存下来
 
     */
    public void getScreenShot(String str) throws IOException {
        List<String> list = getTime();
        //dir+filename
        // ./
指的是当前的项⽬路径下,也就是
BlogAutoTest
下
 
        // ./src/test/java/com/blogWebAutoTest/dirname/filename
        // ./src/test/java/com/blogWebAutoTest/20230212/logintest_20230212
123030
毫秒
.png 
        String filename = 
"./src/test/java/com/blogWebAutoTest/"+list.get(0)+"/"+str+"_"+list.get(1)+".pn
 g";
        File srcfile = driver.getScreenshotAs(OutputType.FILE);
        //
把屏幕截图⽣成的⽂件放到指定的路径
 
        FileUtils.copyFile(srcfile,new File(filename));
        }
 }
 

cases/BlogLogin.py

cpp 复制代码
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLogin:
 url = ""
 driver = ""
 def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_login.html" self.driver = BlogDriver.driver self.driver.get(self.url) def loginSucTest(self): time.sleep(2) self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR, 
"#username").send_keys("admin")
 self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
 # 对登录结果进⾏检测, 如果跳转到了博客列表⻚才算是登录成功了
 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.left > div > img")
 BlogDriver.getScreenShot() self.driver.back()
 def loginFailTest(self): self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR, 
"#username").send_keys("admin")
 self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
 # 等登录失败的结果进⾏检测, 不能仅仅通过body来校验结果,因为登录成功的结果⻚也有
body元素
 expect = "⽤⼾名或密码错误!"
 actual = self.driver.find_element(By.CSS_SELECTOR, "body").text print(actual)
 BlogDriver.getScreenShot() assert expect == actual self.driver.back()

cases/BlogList.py

cpp 复制代码
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogList:
 url = ""
 driver = ""
 def __init__(self): self.driver = BlogDriver.driver self.url = "http://192.168.47.135:8653/blog_system/blog_list.html"
 self.driver.get(self.url)
 # 前提:登陆状态下才能进⼊到列表⻚ def ListTest(self):
 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.left > div > img")
 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.right > div:nth-child(1) > a")
 articles = self.driver.find_elements(By.CSS_SELECTOR, "body > 
div.container > div.right > div")
 assert len(articles) > 10
 #点击⽂章
 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div:nth-child(1) > a").click()
 title = self.driver.title
 assert title == "博客详情⻚" BlogDriver.getScreenShot()

cases/BlogDetail.py

cpp 复制代码
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogDetail:
 url = " "
 driver = ""
 def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_detail.html?
blogId=15"
 self.driver = BlogDriver.driver title = self.driver.title
 #列表⻚已经跳过来了,⽆需再指定url跳转
 if not title=="博客列表⻚":
 self.driver.get(self.url) def DetailCheck(self):
 #body > div.container > div.right > div:nth-child(1) > a BlogDriver.getScreenShot() self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div > h3")
 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div > div.date")
 self.driver.find_element(By.CSS_SELECTOR,"#content")

cases/RunCases.py

cpp 复制代码
from common.Utils import BlogDriverfrom tests import BlogLoginfrom tests import BlogListfrom tests import BlogDetailif __name__ == "__main__":
 BlogLogin.BlogLogin().loginSucTest() BlogList.BlogList().ListTest() BlogDetail.BlogDetail().DetailCheck() BlogDriver.driver.quit()

1.3 将⾃动化测试补充⾄测试报告

测试报告模板:

相关推荐
kebeiovo12 分钟前
项目必备流程图,类图,E-R图实例速通
开发语言·r语言·流程图
软件开发-NETKF888813 分钟前
JSP到Tomcat特详细教程
java·开发语言·tomcat·jsp·项目运行
ftswsfb33 分钟前
现代C++:现代C++?
开发语言·c++
乌萨奇也要立志学C++37 分钟前
【C++详解】C++ 智能指针:使用场景、实现原理与内存泄漏防治
开发语言·c++
minji...44 分钟前
C++ 详细讲解vector类
开发语言·c++
小鸡脚来咯1 小时前
一个Java的main方法在JVM中的执行流程
java·开发语言·jvm
江团1io01 小时前
深入解析三色标记算法
java·开发语言·jvm
一乐小哥1 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
m0_738120721 小时前
CTFshow系列——PHP特性Web97-100
开发语言·安全·web安全·php·ctfshow
你我约定有三1 小时前
java--泛型
java·开发语言·windows