polyanin
@polyanin
Golang, PHP & Symfony developer

Как запустить интеграционные тесты в заданном порядке?

Приветствую!

Есть тест, который надо выполнить по порядку, сначала Create, (получить из него ID) затем Read, используя полученный ID, и т.д.
Как это сделать?

package integration

import (
	"context"
	"testing"
	...

func TestCreate(t *testing.T) {
...
}

func TestRead(t *testing.T) {
...
}

func TestUpdate(t *testing.T) {
...
}

func TestDelete(t *testing.T) {
...
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
@dimuska139
Backend developer
Так делать не правильно. Тесты не должны зависеть друг от друга.
Ответ написан
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Всё, что вы делаете внутри функции func Test... не должно зависеть от других функций Test...
Это однозначно приведёт к усложнению понимания самого теста, усложнению контроля хода его выполнения и результатов.

А когда вы обрастёте тестами - придётся вообще все тесты переделывать :)

Сделайте лучше функцию для создания элемента, например createItem и вызывайте её во всех необходимых функциях теста, например так
func createItem(item Item) (Item, error) {
    // сохраняете объект в базу и возвращаете его
    return Item, nil
}

func TestCreate(t *testing.T) {
 item, err := createItem(...)
 assert.NotNil(t, err)
 ...
 err = deleteItem(item)
 assert.NotNil(t, err)
}

func TestUpdate(t *testing.T) {
 item, err := createItem(...)
 assert.NotNil(t, err)

 err = updateItem(item)
 assert.NotNil(t, err)

 err = deleteItem(item)
 assert.NotNil(t, err)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы