Pull to refresh

Comments 9

Привет.
 Инструменты, которые ты указал, являются более широконаправлеными.

Здесь же получился инструмент исключительно для тестирования http-сервисов на более простом языке. Безусловно, использовать эти инструменты, то может получится такой же результат, но он будет сложнее. А если попробовать это обвязать Allure, то сложность еще увеличится.

В пункте «Как было раньше?» я указал ссылку на статью, чтобы можно было сравнить сложность использования.

 А нам хотелось делать тесты проще — откуда и название Create Your Tests Easily.

Получится ли этой библиотекой описать сценарий из нескольких запросов? Выглядит инструмент весьма интересно.

Привет. Да, можно сделать тест состоящий из нескольких запросов.

Пример:

import (
	"context"
	"net/http"

	"github.com/ozontech/allure-go/pkg/framework/provider"
	"github.com/ozontech/cute"
)

func (i *ExampleSuite) TestExample_TwoSteps(t provider.T) {
	cute.NewTestBuilder().
		Title("TestExample_TwoSteps").
		CreateWithStep(). // Создание 1 шага
		StepName("Step 1").
		RequestBuilder(
			cute.WithURI("https://jsonplaceholder.typicode.com/posts/1/comments"),
			cute.WithMethod(http.MethodPost),
		).
		ExpectStatus(http.StatusCreated).
		ExecuteTest(context.Background(), t).
		NextTestWithStep(). // Создание 2 шага
		StepName("Step 2").
		RequestBuilder(
			cute.WithURI("https://jsonplaceholder.typicode.com/posts/1/comments"),
			cute.WithMethod(http.MethodDelete),
		).
		ExecuteTest(context.Background(), t)
}

Я правильно понимаю, что запускается это через стандартный go test?

А если я хочу использовать результат одного запроса в другом, что делать?

И жаль, что в виде билдера. Красиво не отформатируешь. Кстати, как allure подключается? То ли пропустил, то ли не понял.

Привет!

1) Да, всё стандартно.

2) На данный момент реализация возможно неудобная, но мы работаем над этим!

import (
	"context"
	"fmt"
	"io"
	"log"
	"net/http"
	"testing"
	"time"

	"github.com/ozontech/allure-go/pkg/framework/provider"
	"github.com/ozontech/allure-go/pkg/framework/runner"
	"github.com/ozontech/cute"
)

func TestExampleSingleTest_AllureProviderT(t *testing.T) {
	runner.Run(t, "Test with two steps", func(t provider.T) {
		test := cute.NewTestBuilder().
			Title("AllureProviderT").
			Description("some_description").
			CreateWithStep().
			StepName("Request 1").
			RequestBuilder(
				cute.WithURI("https://jsonplaceholder.typicode.com/posts/1/comments"),
				cute.WithMethod(http.MethodGet),
			).
			ExpectStatus(http.StatusOK).
			ExecuteTest(context.Background(), t)

		bodyBytes, err := io.ReadAll(test.GetHTTPResponse().Body)
		if err != nil {
			log.Fatal(err)
		}
		// process body
		fmt.Println(string(bodyBytes))

		cute.NewTestBuilder().
			CreateWithStep().
			StepName("Request 2").
			RequestBuilder(
				cute.WithURI("https://jsonplaceholder.typicode.com/posts/1/comments"),
				cute.WithMethod(http.MethodGet),
			).
			ExpectExecuteTimeout(10*time.Second).
			ExpectStatus(http.StatusOK).
			ExecuteTest(context.Background(), t)
	})
}

3) Allure отчеты генерируются автоматически.

Ага, понятно. Один билдер - один запрос. Ну, в таком контексте поинтереснее, конечно. Но есть куда развивать. Удачи! :)

тестируется внешний веб сервис? который на время тестов должен быть онлайн, я так понимаю. Т.е. нужен отдельный проект от самого веб-сервиса, а не go test <this-web-service>?

Sign up to leave a comment.