2016-03-18 31 views
1

RESTful API'sini test eden RequestsLibrary numaralı Robot Framework test paketim var. Testler harika çalışıyor. Basit bir örnek çağrı:Robot Çerçeve İstekleriBilgiden - Bu çerezin türü bir Tür Hatası neden oluyor?

*** Test Cases *** 
Test API 
    Create API Session 
    ${resp} = Get Request api_session /foo/bar 
    BlahBlah test the ${resp} etc. 


*** Keywords *** 
Create API Session 
    ${headers_str} = Evaluate str('application/json') 
    &{headers} = Create Dictionary Content-Type=${headers_str} 
    Create Session api_session ${BASE_URL} headers=${headers} verify=True 

Şimdi bu test paketi tarafından yapılan tüm çağrıları için bazı codeception kod kapsamı takibi için çerezleri ekleyerek başlamak gerekir.

*** Test Cases *** 
Test API 
    Create API Session 
    ${resp} = Get Request api_session /foo/bar 
    BlahBlah test the ${resp} etc. 

*** Keywords *** 
Create API Session 
    ${headers_str} = Evaluate str('application/json') 
    &{headers} = Create Dictionary Content-Type=${headers_str} 
    ${cookies_str} = Evaluate str('{"CodeCoverage":"Test Name","CodeCoverage_Suite":null,"CodeCoverage_Config":null}') 
    &{cookies} = Create Dictionary CODECEPTION_CODECOVERAGE=${cookies_str} 
    Create Session api_session ${BASE_URL} headers=${headers} cookies=${cookies} verify=True 

Ama şimdi Test API testi şaşırtıcı TypeError: string indices must be integers ile Get Request anahtar kelime başarısız: Ben şöyle Yukarıdaki çalışma kodu uyarladı. Burada neler oluyor? Çerezimi yanlış anladığımı sanıyorum, ama belgeler başladığımdan daha karışıktı.

cevap

1

Bu, belirli sorunlarınızın bir cevabı değildir, ancak sözdizimi vb. Doğru olsa bile, ne yapmaya çalıştığınız anlamına gelmez. RequestsLibrary artık çerezleri işleyemiyor. Ben neredeyse pencereden dışarı monitörü attı Bu yorumu bulunca, bir şeyler yapmak için geçirilen çerezleri gerekli çünkü bir noktada

# cant pass these into the Session anymore 
    self.timeout = float(timeout) if timeout is not None else None 
    self.cookies = cookies 
    self.verify = verify 

kendime deli ediyordu: Özellikle https://github.com/bulkan/robotframework-requests/blob/master/src/RequestsLibrary/RequestsKeywords.py

edin. Yazar ile twitter üzerinden iletişime geçtim, ancak bunun neden bir sorun olduğuna dair bir cevap almadım. Belki de durumu tamamen yanlış anladım, sadece bir POC olduğu için yaptığım şeyi terk ettim.

+2

İsteklerin çerezleri işleyemediğinden emin misiniz? Bence bu yorumun söylediği şey, çerezleri _session_'a iletememesi. Yine de, her bir _request_ üzerinden çerezleri iletebilir. Bu nedenle kod, çerezleri ('self.cookies'') kaydeder ve gerçek istekte bulunurken kullanır. –

+0

Nope @BryanOakley hiç de emin değilim, bu yüzden benim bir şeyleri yanlış anlayabilmem için önerim, yorumunuzdan almış gibi geliyor. Benim senaryomda, çerezleri oturuma iletmem gerekti ve ben de bu şekilde kandırıldım. – shicky

+0

Bryan iyi bir noktaya sahip. Bunu anlamak için kaynak kodun etrafında dolaşırken bunu gördüğümü hatırlıyorum, ama bu şekilde soruyu yayınlayacağımı düşündüm çünkü belki birisi bunu biliyor olabilir, aslında bunu oturuma aktarabilirsiniz. Çerezleri bireysel aramalara aktarmaya ve bulgularımla bu soruya geri dönmeye çalışacağım. – fildred13