comando de prueba ir detallada

prefacio

ir parámetros de prueba tienen una muy rica, algunos de los parámetros que se utilizan para controlar las pruebas de compilación, otros parámetros de control para realizar la prueba.

Acerca de cobertura de la prueba, veterinario y los parámetros relacionados pprof saltarse la primera, vamos a introducir en detalle al discutir el contenido relevante.

Parámetros de control compilados

-args

Indicando la parte posterior de los parámetros de prueba -args go ir a la prueba. función de prueba específico con los parámetros en consecuencia para controlar el proceso de prueba.

-Args se puede conectar a la parte posterior de un número de parámetros, se pasarán todos los parámetros en una cadena, cada parámetro como una cadena, la cadena y lugar las rebanadas.

// TestArgs utilizan para demostrar cómo analizar los parámetros -args

TestArgs FUNC (T * testing.T) {

si! flag.Parsed () {

flag.Parse ()

}

argList: = flag.Args () // flag.Args () devuelve todos los parámetros -args más tarde, representa una rebanada, cada elemento representa un parámetro

para _, arg: Rango = argList {

Si arg == "nube" {

t.Log ( "Ejecución en la nube.")

} Else {

t.Log ( "Correr en el otro modo.")

}

}

}

En los parámetros cuando se realiza la prueba:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> ir prueba -run TestArgs -v -args "nube"

TestMain configuración.

=== TestArgs RUN

--- PASS: TestArgs (0.00s)

unit_test.go: 28: El ejecutarse en la nube.

PASAR

TestMain desmontaje.

ok 0.353s gotest

Los parámetros de prueba pasados ​​a los -args parámetros especificados.

-json

parámetro de prueba go -json indica el resultado de la conversión es la salida a un formato JSON para facilitar el uso de ensayos analíticos automatizados.

Ejemplos son los siguientes:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> prueba de marcha -run TestAdd -json

{ "Time": "2019-02-28T15: 46: 50.3756322 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Salida": "TestMain configuración \ n"}

{ "Time": "2019-02-28T15: 46: 50.4228258 + 08: 00", "Acción": "correr", "paquete": "gotest", "Test": "TestAdd"}

{ "Time": "2019-02-28T15: 46: 50.423809 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Test": "TestAdd", "Salida":" === RUN TestAdd \ n "}

{ "Time": "2019-02-28T15: 46: 50.423809 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Test": "TestAdd", "Salida":" --- PASS: TestAdd (0.00s) \ n "}

{ "Time": "2019-02-28T15: 46: 50.423809 + 08: 00", "Acción": "pasan", "paquete": "gotest", "Test": "TestAdd", "Tiempo transcurrido": 0 }

{ "Time": "2019-02-28T15: 46: 50.4247922 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Salida": "PASA \ n"}

{ "Time": "2019-02-28T15: 46: 50.4247922 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Salida": "TestMain desmontaje \ n" }

{ "Time": "2019-02-28T15: 46: 50.4257754 + 08: 00", "Acción": "de salida", "paquete": "gotest", "Salida": "ok \ tgotest \ t0.465s \ norte"}

{ "Time": "2019-02-28T15: 46: 50.4257754 + 08: 00", "Acción": "pasan", "paquete": "gotest", "Tiempo transcurrido": 0.465}

-O

Parámetro Especifica -o el programa ejecutable binario resultante, y realizar la prueba, la prueba no elimina el final del programa.

Sin este parámetro, ir prueba el programa ejecutable binario resultante se almacena en el directorio temporal, a continuación, elimine el final de la ejecución.

Ejemplos son los siguientes:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> prueba de marcha -run TestAdd -o TestAdd

TestMain configuración.

PASAR

TestMain desmontaje.

ok 0.439s gotest

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> TestAdd

TestMain configuración.

PASAR

TestMain desmontaje.

En este ejemplo, utilice el parámetro -o para especificar los binarios generados "TestAdd" y colocar el directorio actual, después del final de la ejecución de la prueba, aún puede realizar el programa binario directamente.

Parámetros de control de la prueba

expreg -bench

El valor por defecto no pasa las pruebas de funcionamiento de prueba, con el parámetro -bench antes de poder correr, y correr única función de prueba de rendimiento.

Las expresiones regulares para los que el cribado rendimiento de la prueba a realizar. Si desea realizar todas las pruebas de rendimiento, utilizando el parámetro "-bench." O "= -bench.".

Expresión regular aquí no es estrictamente sentido canónico, pero la clase de relación de contención.

Hay tres pruebas de rendimiento, tales como los siguientes:

  • func BenchmarkMakeSliceWithoutAlloc (b * testing.B)

  • func BenchmarkMakeSliceWithPreAlloc (b * testing.B)

  • func BenchmarkSetBytes (b * testing.B)

Use parámetros "-bench = Slice", entonces el primer dos pruebas ya que ambos contienen la "rebanada", que serán ejecutados, y no se realizará la tercera prueba.

Para un escenario que comprende subprueba, el juego se corresponde en capas. Como un ejemplo de la que comprende sub-test:

func BenchmarkSub (b * testing.B) {

b.Run ( "A = 1", benchSub1)

b.Run ( "A = 2", benchSub2)

b.Run ( "B = 1", benchSub3)

}

Función de prueba convención de nomenclatura, el nombre de los sub-pruebas necesita probar el nombre del padre como un prefijo y una conexión "/", el ejemplo anterior en realidad contiene cuatro pruebas:

  • Sub

  • Sub / A = 1

  • Sub / A = 2

  • Sub / B = 1

Si desea llevar a cabo las tres sub-pruebas, usando el parámetro "Sub -bench". Si desea ejecutar "Sub / A = 1", el parámetro "-bench Sub / A = 1". Si desea ejecutar "Sub / A = 1" y "Sub / A = 2", el parámetro "-bench Sub / A =".

-benchtime s

-benchtime especificar el tiempo de ejecución de cada prueba de rendimiento, si no se especifica, los 1s de tiempo predeterminados.

Por ejemplo, cada una de las pruebas de rendimiento 2s ejecución conjunto de ejecución, los parámetros son: "ir de prueba -bench / = 1 2s Sub A -benchtime".

-cpu 1,2,4

Después de -cpu parámetro proporciona una lista del número de CPU, proporcionando la lista, entonces el ensayo especificado en conformidad con la lista y el número de CPU proporcionado GOMAXPROCS se probaron.

Por ejemplo "-cpu 1,2", entonces cada prueba se realizó dos veces, una vez ejecutado por una CPU, 2 es una ejecución de la CPU. Por ejemplo, usando el comando "ir prueba -bench Sub / A = 1 -cpu 1,2,3,4" se lleva a cabo la prueba:

BenchmarkSub / A = 1 1000 1256835 ns / on

BenchmarkSub / A = 12 2000 912109 ns / en

BenchmarkSub / A = 1-3 2000 888671 ns / on

BenchmarkSub / A = 1-4 2000 894531 ns / on

Los resultados de la prueba en las pruebas posteriores fueron -2, -3, -4, respectivamente, cuando se ejecuta en el valor de nombre GOMAXPROCS. Si GOMAXPROCS es 1, no se muestra.

-count n

-count número especificado de veces que cada prueba realizada, el tiempo de ejecución predeterminado.

Por ejemplo, especificar la ejecución de la prueba dos veces:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> ir prueba -bench Sub / A = 1 2 -count

TestMain configuración.

sustancias pegajosas: windows

goarch: amd64

PKG: gotest

BenchmarkSub / A = 1-4 2000 917968 ns / on

BenchmarkSub / A = 1-4 2000 882812 ns / on

PASAR

TestMain desmontaje.

ok 10.236s gotest

Los resultados se pueden ver en los resultados de las pruebas se presentarán en dos ocasiones.

Si utiliza el número especificado -count de ejecuciones también especificar la lista -cpu, a continuación, contar el número de pruebas se llevará a cabo en la cantidad especificada de cada CPU.

Tenga en cuenta que la prueba de ejemplo no se preocupa por los parámetros -Contar y -cpu, siempre se ejecuta una vez.

-Fallar rapido

Por defecto, la prueba de marcha se llevará a cabo para poner a prueba todo el partido, y finalmente imprimir los resultados de la prueba, con o sin éxito.

-failfast especificar si hay un fallo en la prueba ocurre, detenga de inmediato la prueba. Esto es cuando existe la necesidad de llevar a cabo un gran número de pruebas, puede identificar problemas más rápidamente.

-lista expresión regular

-LIST sólo una lista de resultados con función de prueba con éxito, en realidad no realiza. Por otra parte, no figuran subrutina.

Por ejemplo, usando el parámetro "Sub -lista" enumera sólo tres subpruebas incluyen la prueba, pero no enumera subpruebas:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> Ir a prueba -lista Sub

TestMain configuración.

TestSubParallel

TestSub

BenchmarkSub

TestMain desmontaje.

ok 0.396s gotest

-paralelo n

Especifica el número máximo de pruebas simultáneas.

Cuando se probó usando el método t.Parallel () para prueba en el concurrente, estará limitado por el número máximo de concurrente, concurrente con la espera hasta GOMAXPROCS prueba por defecto, otras pruebas sólo pueden ser bloqueados.

expreg -run

De acuerdo con la expresión regular con la unidad de pruebas y ejemplos de ensayo. reglas de coincidencia regulares y similares -bench.

d -timeout

Por defecto, la ejecución de pruebas de más de 10 minutos será tiempo de espera y de salida.

Cuando los casos, se establecen los 1s tiempo de espera, se cerrará debido a un tiempo de espera se habría requerido por la prueba de 3s:

E: \ Open Source \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> ir prueba -timeout = 1s

TestMain configuración.

pánico: Prueba de tiempo de espera después de 1s

Los tiempos de espera pueden configurarse en cuestión de segundos, y por los puntos de tiempo:

  • Situado en segundos: XS -timeout o -timeout = xs

  • Por sub-conjunto: -timeout xm o -timeout = xm

  • tiempo de fraguado: -timeout xh o -timeout = xh

-v

Por defecto, sólo se imprimen los resultados de las pruebas de los resultados de las pruebas, el parámetro -v pueden imprimir registro detallado.

En virtud de las pruebas de rendimiento, siempre imprimir el registro, el registro porque a veces afectan a los resultados de rendimiento.

-benchmem

Por defecto, los resultados de las pruebas de rendimiento sólo se imprimen el número de carreras, cada operación que consume tiempo. -Benchmem se pueden imprimir utilizando el número de bytes asignados a cada operación, el número de objetos asignados a cada operación.

// no utilizan -benchmem

BenchmarkMakeSliceWithoutAlloc-4 2000 971191 ns / AT

// uso -benchmem

BenchmarkMakeSliceWithoutAlloc-4 2000 914550 ns / 4654335 en B / 30 ALLOCS / in

Aquí, el significado de cada operación en el ciclo de operación, como se muestra en el siguiente ejemplo:

func BenchmarkMakeSliceWithoutAlloc (b * testing.B) {

para i: = 0; i <bN; i ++ {

gotest.MakeSliceWithoutAlloc () // una sola operación

}

}

Publicado 75 artículos originales · ganado elogios 17 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43778179/article/details/104802892
Recomendado
Clasificación