Рубрики
Без рубрики

Проверка зависимостей – методы зависимостей, группы зависимостей

Тест зависимостей TestNG, Методы тестирования зависимостей, Методы тестирования зависят от групп, Порядок выполнения методов тестирования, XML-группа TestNG зависит от элемента, вызов методов XML TestNG-атрибут числа.

Автор оригинала: Pankaj Kumar.

Иногда мы хотим, чтобы наши тестовые примеры выполнялись в определенном порядке. Один из очень распространенных примеров-это когда мы хотим запустить тестовые случаи для операций CRUD. Поэтому мы хотим убедиться, что тестовые данные сначала вставляются, затем извлекаются, обновляются и, наконец, удаляются.

Пример зависимости TestNG – Методы зависимостей

Допустим, у нас есть тестовый класс для операций CRUD.

package com.journaldev.dependency;

import org.testng.annotations.Test;

public class TestNGDependencyExample {

	@Test
	public void insert() {
		System.out.println("inserting demo data");
	}
	
	@Test
	public void select() {
		System.out.println("selecting demo data");
	}
	
	@Test
	public void update() {
		System.out.println("updating demo data");
	}
	
	@Test
	public void delete() {
		System.out.println("deleting demo data");
	}
}

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

deleting demo data
inserting demo data
selecting demo data
updating demo data

Это не то, что мы хотим, чтобы наши тестовые случаи были упорядочены. Один из быстрых и грязных способов-изменить имена методов, чтобы они выполнялись в нужном нам порядке.

Лучший способ-использовать dependsOnMethods , чтобы указать Тестированию, от каких методов зависит этот тест, поэтому эти методы должны выполняться до этого метода.

Ниже приведен наш обновленный тестовый класс, в котором мы создаем порядок выполнения – вставка, выбор, обновление и удаление.

package com.journaldev.dependency;

import org.testng.annotations.Test;

public class TestNGDependencyExample {

	@Test
	public void insert() {
		System.out.println("inserting demo data");
	}
	
	@Test(dependsOnMethods="insert")
	public void select() {
		System.out.println("selecting demo data");
	}
	
	@Test(dependsOnMethods="select")
	public void update() {
		System.out.println("updating demo data");
	}
	
	@Test(dependsOnMethods="update")
	public void delete() {
		System.out.println("deleting demo data");
	}
}

Новым результатом тестового запуска является:

inserting demo data
selecting demo data
updating demo data
deleting demo data

dependsOnMethods принимает в качестве аргумента массив строк. Приведенная ниже аннотация метода delete() также хороша и дает тот же результат.

@Test(dependsOnMethods= {"insert","update"})
public void delete() {
	System.out.println("deleting demo data");
}

Тесты зависимостей TestNG – Группы зависимостей

Мы также можем указать, зависит ли наш тест от каких-либо других групп. Это полезно, когда у нас есть несколько методов, и они сгруппированы вместе. Таким образом, мы можем просто указать группу, от которой зависит этот тест, вместо того, чтобы указывать огромный список всех методов.

Давайте рассмотрим немного сложный пример, в котором наши тесты зависят как от методов, так и от групп. Все ранее определенные методы являются частью группы под названием “тесты”. Эти методы зависят от группы “предварительные тесты”. У нас также есть метод очистки, который зависит от группы “тесты”.

package com.journaldev.dependency;

import org.testng.annotations.Test;

public class TestNGDependencyExample {

	@Test(groups = "pre-tests")
	public void init() {
		System.out.println("init resources");
	}

	@Test(groups = "tests", dependsOnGroups = "pre-tests")
	public void insert() {
		System.out.println("inserting demo data");
	}

	@Test(dependsOnMethods = "insert", groups = "tests")
	public void select() {
		System.out.println("selecting demo data");
	}

	@Test(dependsOnMethods = "select", groups = "tests")
	public void update() {
		System.out.println("updating demo data");
	}

	@Test(dependsOnMethods = { "insert", "update" }, groups = "tests")
	public void delete() {
		System.out.println("deleting demo data");
	}

	@Test(dependsOnGroups = "tests")
	public void cleanup() {
		System.out.println("closing resources");
	}
}

Результатом выполнения теста является:

init resources
inserting demo data
selecting demo data
updating demo data
deleting demo data
closing resources

Зависимость TestNG в пакете XML

XML-пакет TestNG позволяет нам определять зависимости между группами. Если нам нужно определить порядок вызова методов, то мы можем использовать номера вызовов для элемента методов.

Допустим, у нас есть новый класс с почти теми же методами, что и ранее, но между методами и группами не определена зависимость.

package com.journaldev.dependency;

import org.testng.annotations.Test;

public class TestNGDependencyXMLExample {

	@Test(groups = "pre-tests")
	public void init() {
		System.out.println("init resources");
	}

	@Test(groups = "tests")
	public void insert() {
		System.out.println("inserting demo data");
	}

	@Test(groups = "tests")
	public void select() {
		System.out.println("selecting demo data");
	}

	@Test(groups = "tests")
	public void update() {
		System.out.println("updating demo data");
	}

	@Test(groups = "tests")
	public void delete() {
		System.out.println("deleting demo data");
	}

	@Test(groups = "post-tests")
	public void cleanup() {
		System.out.println("closing resources");
	}
}

Вот наш XML-пакет TestNG, который определит порядок выполнения групп и методов.






	
		
			
				
				
			
		

		
			
				
					
					
					
					
					
					
				
			
		
	

Резюме

Мы рассмотрели порядок выполнения методов и групп тестирования с использованием dependsOnMethods и dependsOnGroups свойств аннотации теста. Мы также узнали, как добиться того же самого в файле XML suite.