Testnizer

Değişkenler referansı

Testnizer'da değişken türleri, kapsam hiyerarşisi ve dinamik değer fonksiyonları için tam referans.

Değişkenler, aynı koleksiyonun manuel düzenlemeler olmadan ortamlar, kullanıcılar ve test çalıştırmaları arasında çalışması için istekleri parametrelendirmenize olanak tanır.


Değişken kapsam hiyerarşisi

Testnizer değişkenleri dört kapsam kullanarak çözümler. Aynı anahtar birden fazla kapsamda bulunduğunda, daha spesifik kapsam kazanır. En düşükten en yükseğe öncelik:

  1. Global değişkenler — tüm çalışma alanına ve içindeki her projeye uygulanır. Çalışma zamanında pm.globals.set() / pm.globals.get() ile ayarlanır ve okunur. Ortamlar arasında hiç farklılık göstermeyen değerler için kullanışlıdır, örneğin paylaşılan bir API sürüm dizesi.

  2. Koleksiyon değişkenleri — tek bir projeye kapsamlıdır (Testnizer, betik API terimi olarak “koleksiyon”u proje kapsamı için kullanır). pm.collectionVariables.set() ile ayarlanır. Projeye ait ancak ortama göre farklılık göstermemesi gereken temel yollar ve paylaşılan test verileri için uygundur.

  3. Ortam değişkenleri — şu anda aktif ortamdan çekilir. Ortam oluşturma ve yönetme hakkında bilgi için Ortamlar ve değişkenler sayfasına bakın. Bunlar, hazırlık ve üretim arasında farklılık gösteren değerleri koymak için en yaygın yerdir.

  4. Yerel değişkenler — yalnızca tek bir istek yürütmesi süresince yaşar. Ön istek veya test betiğinde pm.variables.set() ile ayarlanır. Yanıt alındıktan sonra otomatik olarak temizlenir.

Çözümleme örneği. baseUrl’nin üç yerde tanımlandığını varsayalım:

KapsamDeğer
Globalhttps://prod.api.example.com
Koleksiyonhttps://staging.api.example.com
Ortam (aktif: Staging)https://staging-v2.api.example.com

Bir istek {{baseUrl}} kullandığında, Testnizer bunu https://staging-v2.api.example.com olarak çözümler, çünkü üç arasında ortam kapsamı en yüksek önceliğe sahiptir.


{{değişken}} sözdizimi

Çift küme parantezi her istek alanında çalışır:

  • URLhttps://{{baseUrl}}/{{version}}/users
  • Sorgu parametreleri — herhangi bir sorgu parametre satırının değer sütunu
  • Başlıklar — hem ad hem değer sütunları
  • İstek gövdesi — ham JSON, form alanları, GraphQL değişkenleri ve XML gövdesi
  • Ön istek ve test betikleri — bunun yerine pm.* API’sini kullanın (aşağıya bakın)

Testnizer istek gönderilmeden önce tüm yer tutucuları çözümler. Bir değişken herhangi bir kapsamda tanımlı değilse, yer tutucu olduğu gibi bırakılır — gerçek {{değişkenAdı}} metni gönderilir. Tanımsız değişkenler URL çubuğunda turuncu renkle vurgulanır, böylece Gönder’e tıklamadan önce bunları fark edebilirsiniz.

İç içe geçmiş ikame çalışır. Şöyle bir URL:

https://{{baseUrl}}/{{version}}/users

baseUrl ve version’ı bağımsız olarak çözümler. Değişkenler birbirine referans veremez (döngüsel veya zincirli çözümleme desteklenmez).

Betiklerde değişken yönetimi

Ön istek ve test betikleri, çalışma zamanında değişkenleri okumak ve yazmak için pm API’sini kullanır:

// Aktif ortamdan bir değer oku
const token = pm.environment.get('accessToken')

// Yanıttan çıkarılan bir değer yaz
const body = pm.response.json()
pm.environment.set('userId', body.data.id)

// Yalnızca bu yürütme için geçerli olan yerel bir değişken yaz
pm.variables.set('requestId', '12345')

// Koleksiyon düzeyinde (proje düzeyinde) okuma/yazma
pm.collectionVariables.set('sharedCounter', 1)

Dinamik değerler

Dinamik değer fonksiyonları, istek her gönderildiğinde yeni bir değer üretir. Bunları URL’lerde, başlıklarda veya gövde alanlarında doğrudan {{$fonksiyonAdı}} sözdizimi ile kullanın.

FonksiyonDöndürürÖrnek çıktı
{{$randomInt}}0–1000 arasında rastgele tamsayı742
{{$randomInt(1,100)}}Verilen aralıkta rastgele tamsayı37
{{$randomFloat}}0.0–1.0 arasında rastgele ondalık0.4821
{{$randomBoolean}}true veya falsetrue
{{$randomUUID}}Sürüm 4 UUIDf47ac10b-58cc-4372-a567-0e02b2c3d479
{{$timestamp}}Saniye cinsinden Unix epoch1715000000
{{$isoTimestamp}}ISO 8601 tarih-saat2024-05-06T14:30:00.000Z
{{$randomEmail}}Sentetik e-posta adresialice.smith@example.com
{{$randomFirstName}}AdMarcus
{{$randomLastName}}SoyadChen
{{$randomFullName}}Tam adSarah Okafor
{{$randomPhoneNumber}}Telefon numarası+1-555-0147
{{$randomAlphaNumeric}}8 karakterlik alfanümerik dizex4Kp9mQr
{{$randomHexColor}}Onaltılık renk kodu#a3c4e8
{{$randomIP}}IPv4 adresi192.168.14.23
{{$randomLoremWord}}Tek lorem ipsum sözcüğüpariatur
{{$randomLoremParagraph}}Lorem ipsum paragrafıLorem ipsum dolor sit amet…

Betiklerde dinamik değerler

{{$fonksiyonAdı}} sözdizimi betik kodu içinde değerlendirilmez. Şunu yazarsanız UUID değil {{$randomUUID}} dizesini elde edersiniz:

// YANLIŞ — $randomUUID betik dizesi içinde genişletilmez
pm.variables.set('traceId', '{{$randomUUID}}')

Bunun yerine standart JavaScript ile değer üretin:

// DOĞRU — sandbox'ta mevcut kripto modülünü kullanın
const { randomUUID } = require('crypto')
pm.variables.set('traceId', randomUUID())

// Veya rastgele tamsayı için:
const requestId = Math.floor(Math.random() * 1000)
pm.variables.set('requestId', requestId)

Dinamik değerler, Testnizer’ın göndermeden önce ikame ettiği alanlar için tasarlanmıştır — URL, başlıklar, sorgu parametreleri ve gövde metni.


Sırlar ve hassas değişkenler

Herhangi bir ortam değişkeni oluşturulurken veya düzenlenirken sır olarak işaretlenebilir. Sır değişkenler, macOS’ta işletim sistemi anahtarlığı ve Windows Kimlik Bilgisi Yöneticisi tarafından desteklenen electron-store üzerinden saklanır.

Sır değişkenlerin davranışı:

  • Değer, Ortamlar panelinde, konsolda ve istek geçmişi görüntüleyicisinde yıldız işaretleriyle maskelenir.
  • pm.environment.get('secretKey'), betikler içinde gerçek değeri döndürür, böylece Authorization başlıklarında kullanabilirsiniz.
  • pm.environment.toObject(), sır anahtarların "***" ile değiştirildiği bir nesne döndürür. Sır değerleri okumak için bu yönteme güvenmeyin.
  • Sır değerler hiçbir zaman dışa aktarılan koleksiyon dosyalarına yazılmaz. Sır değişkene referans veren bir koleksiyonu dışa aktarırsanız, dışa aktarma yalnızca değişken adını içerir.

Ortam oluşturma ve düzenleme kılavuzu için Ortamlar ve değişkenler sayfasına bakın.