Postman Runner Değişken Kaybolma Sorunu: Kök Neden ve Çözümü

Postman değişkenleri manuel modda çalışıyor ama Collection Runner'da kayboluyor mu? Kapsam uyumsuzluğunun temel nedenini ve pm.environment.set hataları için kesin düzeltmeleri öğrenin.

INEZA Felin-Michel

INEZA Felin-Michel

9 June 2026

Postman Runner Değişken Kaybolma Sorunu: Kök Neden ve Çözümü

Kurumsal Apidog

Şirket İçi Dağıtım

SSO & RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfet

Kısaca

Manuel istek yürütme sırasında ayarlanan değişkenler, aynı koleksiyonu Postman'ın Koleksiyon Çalıştırıcısı'nda çalıştırdığınızda sıklıkla kaybolur. Temel neden, bir değişken kapsamı uyuşmazlığıdır: pm.environment.set çalıştırıcıda manuel moddan farklı davranır ve koleksiyon değişkenleri ortam değişkenlerinden farklı çalışır. Bu kılavuz, bunun neden tam olarak böyle olduğunu ve nasıl düzeltileceğini açıklar, ardından Apidog'un değişken kapsamını yanlışlıkla yanlış yapılandırmayı zorlaştıracak bir şekilde nasıl ele aldığını gösterir.

düğme

Giriş

Postman'de bir API'yi manuel olarak test ediyorsunuz. Bir oturum açma isteği çalıştırıyorsunuz, ön istek betiği bir kimlik doğrulama belirteci ayarlıyor ve sonraki istekler bunu sorunsuz bir şekilde alıyor. Her şey yolunda.

Ardından “Koleksiyonu Çalıştır” düğmesine tıklıyorsunuz. Çalıştırıcı başlar, oturum açma isteği başarılı olur, ancak bir sonraki istek 401 hatasıyla başarısız olur. Belirteç orada değildir.

Bu senaryo, Stack Overflow ve Postman topluluk forumlarında defalarca karşımıza çıkmaktadır. Yanıtlar genellikle değişken kapsamına işaret eder, ancak manuel test ile çalıştırıcı arasındaki davranış farkının tam resmini nadiren açıklarlar.

Bunu anlamak, Postman'ın değişken kapsam hiyerarşisini anlamayı gerektirir. Bunu açıkça gördüğünüzde, çözüm basittir.

Postman'ın değişken kapsam hiyerarşisi

Postman, en yüksekten en düşüğe öncelik sırasına göre listelenen beş değişken kapsamına sahiptir:

  1. Yerel değişkenler – yalnızca mevcut betik yürütmesi içinde kullanılabilir, istekler arasında erişilemez
  2. Veri değişkenleri – veri odaklı çalıştırmalar için bir CSV veya JSON dosyasından yüklenir
  3. Koleksiyon değişkenleri – koleksiyona özgüdür, o koleksiyondaki istekler arasında kalıcıdır
  4. Ortam değişkenleri – seçilen ortama özgüdür, koleksiyonlar arasında kalıcıdır
  5. Küresel değişkenler – herhangi bir ortamdaki herhangi bir koleksiyonda kullanılabilir

Postman, {{token}} gibi bir değişken referansını çözdüğünde, bu listeyi aşağı doğru tarar ve bulduğu ilk eşleşmeyi kullanır.

Sorun şu ki, “kalıcı olmak” kelimesi, koleksiyonu nasıl çalıştırdığınıza bağlı olarak farklı anlamlara gelir.

Değişkenler Koleksiyon Çalıştırıcısında neden kaybolur?

Mevcut değer ve başlangıç değeri ayrımı

Her Postman değişkeninin iki alanı vardır: “başlangıç değeri” ve “mevcut değer.”

Bir betikte pm.environment.set('token', value) kullanarak bir değişkeni programatik olarak ayarladığınızda, Postman etkin ortamınızdaki mevcut değeri günceller.

Manuel test modunda, bu beklendiği gibi çalışır, çünkü yerel mevcut değerleriniz aynı oturum içindeki ayrı ayrı istek yürütmeleri boyunca kalıcı olur.

Koleksiyon Çalıştırıcısında davranış değişir. Çalıştırıcı, her çalıştırmayı çalıştırma başlangıcındaki ortamın mevcut durumundan başlatır. Çalıştırma sırasında değişkenleri güncelleyen betikler, o çalıştırma içinde doğru şekilde çalışır. Ancak çalıştırıcı, çalıştırmalar arasında değişkenleri temizleyecek şekilde yapılandırılmışsa veya başlangıç değeri boşsa ve çalıştırıcı yeni bir ortam anlık görüntüsü kullanıyorsa, betiğinizin çalışmasına rağmen değişkenin kalıcı görünmediği bir duruma düşebilirsiniz.

Ortam değişkeni ve koleksiyon değişkeni sorunu

İşte daha yaygın tuzak. Bir yanıt sonrası betikte bir değişken ayarlıyorsunuz:

pm.environment.set('token', pm.response.json().access_token);

Bu, **etkin ortamda** bir değişken ayarlar. Ancak Koleksiyon Çalıştırıcısında “Değişken değerlerini koru” adlı bir seçenek bulunur. Bu onay kutusu işaretlenmezse (varsayılan olarak işaretli değildir), çalıştırıcı ortam değişkenlerini çalıştırma sonrasında başlangıç değerlerine sıfırlar. Çalıştırma sırasında ayarlanan herhangi bir değer atılır.

Koleksiyonu bir ortam seçili olmadan çalıştırıyorsanız, pm.environment.set sessizce başarısız olur. Yazılacak bir ortam yoktur. Değişken kaybolur.

Manuel ve çalıştırıcı modu arasındaki kapsam uyuşmazlığı

Manuel testte, genellikle bir ortam seçili olur ve bu, tüm Postman oturumunuz boyunca kalıcıdır. Bir istek çalıştırdığınızda, bir değişken ayarladığınızda ve başka bir istek çalıştırdığınızda, hepsi aynı kalıcı ortam bağlamında gerçekleşir.

Koleksiyon Çalıştırıcısı ayrı bir yürütme bağlamı oluşturur. Başlangıçta ortam durumunu yükler, tüm istekleri çalıştırır ve ardından (eğer “Değişken değerlerini koru” seçeneğini işaretlemediyseniz) ortamı çalıştırma öncesi durumuna döndürür.

Bu, çalıştırıcıdaki bir istek tarafından ayarlanan değişkenlerin, aynı çalıştırmadaki sonraki isteklere açık olacağı anlamına gelir, ancak açıkça korumadığınız sürece çalıştırma sona erdikten sonra ortam panelinize kalıcı olmazlar.

Çözümler

Çözüm 1: Çalıştırıcıda “Değişken değerlerini koru” seçeneğini işaretleyin

Koleksiyon Çalıştırıcısında, Çalıştır'a tıklamadan önce:

  1. Çalıştırıcı yapılandırma panelinde “Değişken değerlerini koru” seçeneğini arayın.
  2. Bu kutuyu işaretleyin.

Bu, çalıştırıcıya, çalıştırma tamamlandıktan sonra tüm değişken değişikliklerini etkin ortamınıza geri yazmasını söyler. Çalıştırma sırasında betikler tarafından ayarlanan değişkenler, çalıştırma bittiğinde ortam panelinizde görünür olacaktır.

Ne zaman kullanılır: Çalıştırıcının, diğer araçların veya sonraki çalıştırmaların kullanacağı bir kimlik doğrulama belirtecini yenileme gibi paylaşılan durumu güncellemesini istediğinizde.

Ne zaman kullanılmaz: Birden çok yineleme çalıştırdığınızda ve yineleme 1'de ayarlanan değişkenlerin yineleme 2'yi kirleteceği durumlarda. Bu durumda, veri dosyaları kullanın veya her yinelemenin başlangıcında değişkenleri açıkça sıfırlayın.

Çözüm 2: Çalıştırma içi durum için ortam değişkenleri yerine koleksiyon değişkenleri kullanın

Bir değişkenin yalnızca aynı koleksiyon çalıştırması içindeki istekler arasında paylaşılması gerekiyorsa, ortam değişkenleri yerine koleksiyon değişkenleri kullanın:

// Oturum açma isteğinizin yanıt sonrası betiğinde:
pm.collectionVariables.set('token', pm.response.json().access_token);

// Sonraki isteklerin ön istek betiğinde:
const token = pm.collectionVariables.get('token');

Koleksiyon değişkenleri, bir ortamın seçili olup olmamasından bağımsız olarak çalıştırıcıda her zaman kullanılabilir. Koleksiyon çalıştırmasının süresince kalıcıdırlar. Tek bir koleksiyon içinde ayarlanan ve tüketilen değerler için doğru kapsamdırlar.

Çözüm 3: Çalıştırmadan önce bir ortamın seçildiğinden emin olun

pm.environment.set, hiçbir ortam etkin olmadığında sessizce başarısız olur. Koleksiyonu çalıştırmadan önce:

  1. Koleksiyon Çalıştırıcısını açın.
  2. “Ortam” açılır menüsünde bir ortamın seçili olduğunu doğrulayın.
  3. Ortam düzeyinde değişkenlere ihtiyacınız yoksa, bunun yerine koleksiyon değişkenleri kullanın (Çözüm 2).

Çözüm 4: Her zaman var olması gereken değişkenler için başlangıç değerleri kullanın

Eğer baseUrl gibi bir değişkenin bir çalıştırmadaki ilk istekten itibaren kullanılabilir olması gerekiyorsa, bunu ortamınızda sadece mevcut değer olarak değil, başlangıç değeri olarak ayarlayın.

Ortam düzenleyicisinde:

Yalnızca mevcut değer ayarlanmışsa ve çalıştırıcının yerel mevcut değerlerinize erişimi yoksa (örneğin, bir ekip arkadaşının koleksiyonu çalıştırması veya bir Newman/Apidog CLI çalıştırması), değişken boş başlar.

Çözüm 5: Konsol kaydı ile hata ayıklama

Ne olduğunu tam olarak görmek için ön istek ve yanıt sonrası betiklerinize console.log ekleyin:

// Ön istek betiği
console.log('token before request:', pm.collectionVariables.get('token'));
console.log('environment token:', pm.environment.get('token'));

Koleksiyonu çalıştırmadan önce Postman Konsolunu açın (Görünüm > Postman Konsolunu Göster). Kayıtlar size her değişkenin hangi kapsamdan okunduğunu ve her adımda hangi değeri tuttuğunu tam olarak gösterecektir.

Apidog değişken kapsamını nasıl yönetir?

Apidog aynı kapsam hiyerarşisini kullanır: küresel, ortam, koleksiyon ve yerel. Temel fark kullanıcı arayüzündedir.

Apidog'un değişken düzenleyicisinde, başlangıç ve mevcut değerler açık etiketler ve renklerle gösterilir. Arayüz, yalnızca mevcut değeri yanlışlıkla ayarlamayı zorlaştırır. Bir betik pm.environment.set kullanarak bir değişken ayarladığında (Apidog, Postman uyumluluğu için bunu destekler), ortam paneli gerçek zamanlı olarak görsel olarak güncellenir, böylece değişikliği görebilirsiniz.

Apidog'un test çalıştırıcısı da, açıkça yapılandırmadığınız sürece adımlar arasında değişken değerlerini sıfırlamaz. Varsayılan davranış, bir çalıştırmadaki istekler arasında değişken durumunu korumaktır; bu da çoğu geliştiricinin manuel testten beklediğiyle eşleşir.

Ekip senaryoları için, Apidog'un yerel öncelikli modeli, ortam değişkenlerinin diske depolandığı anlamına gelir. Çalıştırmalar arasında mevcut değerlerinizi üzerine yazan bir bulut senkronizasyonu yoktur.

Yaygın hataların özeti

Hata Belirti Çözüm
Ortam seçilmedi pm.environment.set sessizce başarısız olur Bir ortam seçin veya koleksiyon değişkenleri kullanın
Yalnızca mevcut değer ayarlandı CI'da veya ekip arkadaşının makinesinde değişken eksik Ortam düzenleyicisinde başlangıç değerini ayarlayın
Değişken değerlerini koru işareti kaldırıldı Çalıştırıcı tamamlandıktan sonra değişkenler sıfırlanır Çalıştırıcı yapılandırmasında “Değişken değerlerini koru” seçeneğini işaretleyin
Çalıştırma içi durum için ortam değişkenleri kullanma Manuel modda çalışır, çalıştırıcıda başarısız olur pm.collectionVariables.set'e geçin
Kaydedilenlerde yanlış kapsamı kontrol etme Değişken var ancak yanlış değer kullanılıyor Her iki kapsamı da kaydedin ve çözüm önceliğini kontrol edin

Sıkça Sorulan Sorular

pm.environment.set manuel modda çalışırken çalıştırıcıda neden çalışmaz?Manuel modda, kalıcı bir ortam oturumunuz vardır. Çalıştırıcıda, ortam çalıştırmanın başlangıcında yüklenir ve varsayılan olarak sonunda sıfırlanır. Çalıştırma sırasında değişkenleri ayarlayan betikler, o çalıştırmadaki sonraki istekler için hala çalışır, ancak “Değişken değerlerini koru” seçeneği işaretlenmediği sürece değişiklikler ortamınıza kalıcı olmaz.

pm.environment.set ve pm.collectionVariables.set arasındaki fark nedir?pm.environment.set, o ortamı kullanan tüm koleksiyonlar arasında paylaşılan etkin ortama yazar. pm.collectionVariables.set, belirli koleksiyona bağlı bir kapsama yazar. Yalnızca tek bir koleksiyon çalıştırması içinde önemli olan değerler için, koleksiyon değişkenleri daha uygundur ve bir ortamın seçilmesini gerektirmez.

Bu sorun Newman'da da meydana gelir mi?Evet. Newman da aynı kapsam modeline sahiptir. Varsayılan olarak, Newman her çalıştırmayı dışa aktarılan ortamın başlangıç değerleriyle başlatır ve `--export-environment` bayrağını kullanarak son ortam durumunu bir dosyaya yazmadığınız sürece, çalıştırma sonrasında değişiklikleri kalıcı hale getirmez.

Newman'daki `--export-environment` bayrağı nedir?Newman'a, çalıştırma sırasında betikler tarafından ayarlanan tüm değerler dahil olmak üzere ortamın son durumunu, çalıştırma tamamlandıktan sonra bir JSON dosyasına yazmasını söyler. Daha sonra bu dosyayı bir sonraki çalıştırma için ortam olarak geçirebilirsiniz. Bu, bir çalıştırmanın bir sonraki tarafından kullanılan belirteçler ürettiği işlem hatları için kullanışlıdır.

Apidog pm.collectionVariables.set'i destekler mi?Evet. Apidog, pm.collectionVariables.set, pm.collectionVariables.get, pm.environment.set ve pm.environment.get dahil olmak üzere tam Postman betik API'sini destekler. Postman'dan taşınan koleksiyonlar aynı betik sözdizimini kullanır.

Postman'da değişkenleri bir koleksiyondan diğerine nasıl aktarırım?Küresel değişkenler kullanın: pm.globals.set('token', value). Küresel değişkenler, Postman oturumunun ömrü boyunca koleksiyonlar ve ortamlar arasında kalıcıdır. Küresel değişkenler kapsamlı olmadığından ve ad çakışmalarına neden olabileceğinden, ekip ortamlarında bu yaklaşımla dikkatli olun.

Postman'daki değişken kapsamı sorunları, API test paketlerinde yanlış negatiflerin en güvenilir kaynaklarından biridir. Manuel olarak geçen ancak çalıştırıcıda başarısız olan bir test, güvenebileceğiniz bir test değildir. Kapsam modelini anlamak, doğru bağlam için doğru ayarlayıcıyı kullanmak ve uygun olduğunda “Değişken değerlerini koru” seçeneğini işaretlemek, bu sorunların çoğunu çözen üç hamledir.

düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin