如何使用Jest从不同的文件中运行不同的描述块。

问题描述 投票:0回答:1

我需要从不同的文件中以确定的顺序运行不同的描述块。同时,我需要在这些块之间传递1个参数,但这个参数需要保持它离开前一个描述块时的状态。例如,我有这样一个文件。

file1.test.js

export const Test1= () => {
   describe("Describe 1", () => {
     test("test1", async () => {//my test1
     })
    test("test2", async () => {//my test2
     })

   describe("Describe 2", () => {
     test("test3", async () => {//my test3
     })
    test("test4", async () => {//my test4
     })
}

file2.test.js

export const Test2= () => {
   describe("Describe 3", () => {
     test("test5", async () => {//my test5
     })
    test("test6", async () => {//my test6
     })

   describe("Describe 4", () => {
     test("test7", async () => {//my test7
     })
    test("test8", async () => {//my test8
     })
}

我想用这个参数按以下顺序运行测试。

let myArgument;
Test1
   Describe 1(myArgument)
Test2
   Describe 3
Test1
   Describe 2(myArgument)
Test2
   Describe 4

我正在使用运行测试。jest --runInBand

jest jest-puppeteer playwright
1个回答
0
投票

一般来说,保持测试之间的隔离是个好主意,这样一个测试的失败就不会级联到其他测试。Playwright建议使用不同的浏览器上下文进行测试--浏览器上下文是并发的、隔离的执行环境。它们创建起来很便宜快,而且可以重复使用一个浏览器实例。

话虽如此,但通过Jest也可以实现您的用例,但需要做一些工作。

  1. 定义 myArgument 作为一个全局对象。全局对象在各个测试中是共享的,可以通过 globals 在你的Jest配置中(文件)

  2. 在 Jest 配置中定义一个自定义的排序器,以定义执行测试的顺序。使用 testSequencer Jest配置中的属性 (文件)

© www.soinside.com 2019 - 2024. All rights reserved.