Asis เป็นสาธารณูปโภคที่มีงูใหญ่ที่มีน้ำหนักเบาสำหรับการให้บริการตามที่เป็นเอกสาร (ที่มีส่วนหัวและเนื้อหา) ผ่าน HTTP
เมื่อมาถึงเครื่องมือทดสอบหน่วยที่เรียกทรัพยากร HTTP เราตัดสินใจที่เราต้องการที่จะมีวิธีที่จะสามารถจัดเก็บการตอบสนองที่กำหนดไว้ล่วงหน้าและจากนั้นให้บริการพวกเขาจากเซิร์ฟเวอร์ในกระบวนการเดียวกันในขณะที่เรากำลังใช้การทดสอบเหล่านี้ ไม่มีลิง patching โครงสร้างพื้นฐานไม่ (เช่นพร็อกซี่แคชเซิร์ฟเวอร์)
มันควรจะกล่าวว่าถ้าคุณกำลังมองหาในการจับภาพการร้องขอจากบริการที่มีอยู่และจากนั้นพวกเขาเล่นใหม่โครงการโฮมเธียเตอร์ได้รับการ ported ไปหลายภาษาและเป็นประโยชน์อย่างมาก
คืออะไร?
บิดมาพร้อมกับคุณสมบัติที่เรียกว่าตามที่มีการให้บริการ, แรงบันดาลใจจากอาปาเช่ แต่ที่อยากจะรวมเป็น Twisted พึ่งพา?
นี้จะขึ้นอยู่บนขวดและทำให้รองรับจำนวนของแบ็กเอนด์ WSGI (รวมถึงการบิดและ gevent) และมีความหมายที่มีน้ำหนักเบา ตามที่เป็นเอกสารซึ่งเป็นหนึ่งในทั้งส่วนหัวและเนื้อหาสำหรับการตอบสนอง HTTP จะถูกเก็บไว้:
HTTP / 1.0 200 ตกลง
เนื้อหาความยาว: 137
เนื้อหา-Type: text / html
& nbsp;
& nbsp;
& nbsp;
& nbsp;
& nbsp;
สวัสดี, ฉันหน้าทดสอบ
& nbsp;
โปรดทราบว่านี้ต้องขึ้นบรรทัดใหม่เฉพาะส่วนหัว - กลับสายการบินมีการเพิ่มโดยอัตโนมัติเพื่อความสะดวก
การติดตั้ง
Peasy ง่าย:
sudo PIP ติดตั้ง Asis
หรือสำหรับผู้ที่ชื่นชอบจากที่มา:
คอมไพล์โคลน https://github.com/seomoz/asis
cd Asis && หลาม sudo setup.py ติดตั้ง
การใช้งาน
คุณสามารถเรียกใช้เซิร์ฟเวอร์ Asis ค่อนข้างง่าย:
นำเข้า Asis
# เสิร์ฟไฟล์ที่เก็บไว้ใน 'foo /' บนพอร์ต 8080
เซิร์ฟเวอร์ = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
อีกทางเลือกหนึ่งที่จะสามารถนำมาใช้ในแฟชั่นบริบทผู้จัดการ:
นำเข้า Asis
การร้องขอนำเข้า
กับ asis.Server ('foo') เป็นเซิร์ฟเวอร์:
& nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
นอกจากนี้ยังมีอรรถประโยชน์บรรทัดคำสั่งรวมเพื่ออำนวยความสะดวกสำหรับการให้บริการไฟล์ Asis เป็นเซิร์ฟเวอร์แบบสแตนด์อโลนซึ่งเป็นประโยชน์อย่างยิ่งสำหรับการดูไฟล์เหล่านี้ผ่านขดหรือเบราว์เซอร์:
# เสิร์ฟไฟล์ออกจาก 'foo /' บนพอร์ต 8080
foo Asis เซิร์ฟเวอร์ --port 8080
# เดียวกันโดยใช้ gevent และเป็น verbose
foo Asis เซิร์ฟเวอร์ --port 8080 --server gevent --verbose
bells และ whistles
มีคุณสมบัติบางอย่างที่คุณอาจจำเป็นต้องใช้ประโยชน์จากการมีดังนี้:
เนื้อหาการเข้ารหัส
ถ้าคุณจัดหาหัวเนื้อหาการเข้ารหัสเป็นทั้ง gzip หรือยุบเนื้อหาธรรมดาเก็บไว้ในแฟ้มจะถูกบีบอัดและส่งผ่านสายทางที่ ในกรณีที่คุณสามารถออกจากความยาวเนื้อหาเป็น 0, และความยาวของเนื้อหาที่แท้จริง (หลังจากการบีบอัด) จะถูกส่งไปในสถานที่ ตัวอย่างเช่นต่อไปนี้ได้รับการส่งเป็นเนื้อหา gzip บีบอัดอย่างถูกต้องเพื่อเบราว์เซอร์:
HTTP / 1.0 200 ตกลง
ความยาวเนื้อหา: 0
เนื้อหา-Type: text / plain
เนื้อหาการเข้ารหัส: gzip
สวัสดีชาวโลก!
charset
หากคุณรวม charset ในส่วนหัวของเนื้อหาชนิดของคุณแล้วเนื้อหาของคุณจะถูกตีความเป็น UTF-8 บนดิสก์และการเข้ารหัสแล้วในการเข้ารหัสให้ ความคิดที่จะช่วยให้กระบวนการในการแก้ไขเพื่อที่คุณจะได้ไม่ต้องบันทึกอย่างชัดเจนตัวอย่างของคุณในลักษณะของพวกเขาประกาศชุด เช่นเดียวกับการเปลี่ยนแปลงเนื้อหาการเข้ารหัสส่วนหัวของความยาวเนื้อหาเป็น recomputed ถูกต้องครั้งเดียวการเปลี่ยนแปลงเสร็จสมบูรณ์
โหมด
โดยค่าเริ่มต้นเซิร์ฟเวอร์จะเริ่มต้นกับเซิร์ฟเวอร์ gevent และจะเริ่มต้นในด้ายสีเขียวพื้นหลังและมันควรจะมีความพร้อมที่จะให้บริการการร้องขอทันทีที่วิ่ง () ผลตอบแทน
อีกทางเลือกหนึ่งเซิร์ฟเวอร์สามารถเริ่มต้นในสองโหมดอื่น ๆ , ส้อมและบล็อก หากส้อมแล้วมันจะใช้เซิร์ฟเวอร์ในกระบวนการที่แยกต่างหากและมันยังคงทำงานเป็นทั้งผู้จัดการบริบทและหลังจากเรียก run () ถ้าบล็อกเลือกแล้วมันจะทำงานในลักษณะที่ปิดกั้น ตัวอย่างเช่น:
# เรียกใช้ในกระบวนการแยก
กับ asis.Server ('foo', พอร์ต = 8080 โหมด = 'ส้อม'):
& nbsp; # ให้การร้องขอบาง
& nbsp; ...
ตัวอย่างและการทดสอบ
รวมอยู่ในที่นี่มีจำนวนตัวอย่างของตามที่เป็นเอกสารและ test.py สามารถเรียกใช้โดยตรงเพื่อตรวจสอบว่าพวกเขาจะถูกโอนอย่างถูกต้อง:
./test.py
นอกจากนี้ยังมีตัวอย่างของวิธีการที่คุณอาจจะรวมไว้ในการทดสอบหน่วยของคุณ
การบริจาค
. คำถามความคิดเห็นความคิดยินดีต้อนรับเสมอ
ต้องการ
- หลาม
ความคิดเห็นที่ไม่พบ